在 Android 上,用户可以将一个小部件放在桌面上,然后通过长按并在按住时移动手指来移动它。
是否可以通过长按编程获取小部件在屏幕上移动的位置?
我需要我的桌面小部件知道它是否靠近设备屏幕的边缘。根据它是在桌面顶部还是底部,将为小部件选择不同的布局。
我希望这个位置不是以像素为单位给出的,而是作为一对基于 0 的索引给出的。例如。如果设备可以在桌面上显示 4x7 单元格,则右下角的小部件应具有坐标 (3, 6)。此外,应该可以通过某种方式询问设备有多少单元格适合屏幕。
还是我误会了什么?
最佳答案
在 Android 2.1 及更高版本上,对于某些选定的主屏幕,您可以通过 getSourceBounds()
找到应用程序小部件所在的位置——此值附加到任何 Intent
您通过 setOnClickPendingIntent()
通过 PendingIntent
生成。
但是:
- 这仅适用于 Android 2.1 及更新版本
- 并非所有主屏幕都可以这样做,因为这是 Launcher 代码 IIRC 的一部分
- 坐标以像素为单位 IIRC
- 没有任何其他方式可以查询主屏幕以找出此信息,因为没有与主屏幕交互的 API
因此,我认为您的既定目标(“取决于它是在桌面顶部还是底部,将为小部件选择不同的布局”)是不可能的,我认为。
关于Android:以编程方式获取桌面上小部件相对于其他小部件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324602/