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

标签 android widget screen desktop position

在 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/

相关文章:

php - Wordpress 动态页脚小部件 - 仅当一个小部件存在时才显示第二个小部件区域,否则显示 1

php - DateControl yii 2 中的预选值

c# - 我可以在后台线程中使用 Screen 类吗?

java - Textureview.getBitmap() 使主 Ui 线程变得缓慢

Android:在 ListView Adapter 中切换 OnCheckedChangeListener

安卓多个home widgets不更新

Android 为不同的屏幕应用样式

android - 管理不同的手机屏幕尺寸 - Haxe、OpenFL

android - 在移动应用程序(iOS/Android)上显示我的栅格 map

java - 初始化后对象为空