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

时间:2011-03-16 11:29:20

标签: android widget screen desktop position

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

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

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

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

或者我误解了什么?

1 个答案:

答案 0 :(得分:5)

在Android 2.1及更高版本中,通过一些选择主屏幕,您可以找到应用小部件在getSourceBounds()点击时所在的位置 - 此值附加到您生成的任何Intent PendingIntent来自setOnClickPendingIntent()

然而:

  • 这仅适用于Android 2.1及更新版
  • 并非所有主屏幕都可以这样做,因为这是Launcher代码IIRC的一部分
  • 坐标以像素IIRC
  • 为单位
  • 没有办法询问主屏幕以任何其他方式查找此信息,因为没有API与主屏幕交互

因此,我认为你所声明的目标(“取决于它是在桌面的顶部还是在底部不同的小部件布局将被选中”)我认为是不可能的。