开发者

Android: programmatically get position of the widget on desktop relative to other widgets

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 w开发者_StackOverflowidget 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?


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜