Android:以编程方式获取桌面上小部件相对于其他小部件的位置

发布于 2024-10-22 02:55:41 字数 291 浏览 4 评论 0原文

在 Android 上,用户可以在桌面上放置一个小部件,然后通过长按并在按住时移动手指来移动它。

是否可以以编程方式获取屏幕上通过长触摸移动小部件的位置?

我需要我的桌面小部件知道它是否靠近设备屏幕的边缘。根据它是在桌面顶部还是底部,将选择小部件的不同布局。

我希望这个位置不是以像素为单位给出的,而是以一对从 0 为基础的索引给出的。例如,如果设备可以在桌面上显示 4x7 单元格,则右下角的小部件应该具有坐标 (3, 6)。此外,应该可以以某种方式询问设备屏幕上适合多少个单元格。

或者我误解了什么?

On Android the user can place a widget on the desktop and then to move it by long touch and moving the finger while still holding.

Is it possible to programmatically get the position on the screen where the widget was moved by long touch?

I need my desktop widget to know if it's near the edge of the screen of the device. Depending on whether it's on the top of the desktop or at the bottom different layouts for the widget will be chosen.

I would expect that this position is not given in pixels, but as pair of 0-based indexes. E.g. if the device can display 4x7 cells on the desktop, the widget in the bottom-right corner should have coords (3, 6). Also it should be somehow possible to ask the device how many cells fit into the screen.

Or am I misunderstanding something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑忘罢 2024-10-29 02:55:41

在 Android 2.1 及更高版本上,对于某些选定的主屏幕,您可以通过 getSourceBounds() 单击应用程序小部件时找到它所在的位置 - 该值附加到任何 Intent 您通过 setOnClickPendingIntent() 通过 PendingIntent 生成。

但是:

  • 这仅适用于 Android 2.1 及更高版本,
  • 并非所有主屏幕都可以这样做,因为这是启动器代码 IIRC 的一部分,
  • 坐标以像素为单位 IIRC
  • 无法通过其他方式询问主屏幕以找出此信息,因为没有 API 与主屏幕交互

,因此,我认为你所说的目标(“根据它是在桌面顶部还是在底部,将选择小部件的不同布局”)是不可能的。

On Android 2.1 and later, with some select home screens, you can find out where an app widget resides when it is clicked via getSourceBounds() -- this value is attached to any Intent you spawn via a PendingIntent via setOnClickPendingIntent().

However:

  • this only works on Android 2.1 and newer
  • not all home screens might do this, as this is part of the Launcher code IIRC
  • the coordinates are in pixels IIRC
  • there is no way to interrogate the home screen to find out this information any other way, since there is no API to interact with the home screen

Hence, I think your stated goal ("Depending on whether it's on the top of the desktop or at the bottom different layouts for the widget will be chosen") is impossible, I think.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文