Android: программно получить положение виджета на рабочем столе относительно других виджетов - PullRequest
3 голосов
/ 16 марта 2011

На Android пользователь может разместить виджет на рабочем столе, а затем перемещать его, долгим касанием и перемещением пальца, все еще удерживая.

Можно ли программно получить положение на экране, где находится виджетбыл перемещен длинным прикосновением?

Мне нужен мой виджет рабочего стола, чтобы знать, находится ли он у края экрана устройства.В зависимости от того, находится ли он наверху рабочего стола или внизу, будут выбраны разные макеты для виджета.

Я ожидаю, что эта позиция указана не в пикселях, а в виде пары индексов на основе 0.Например, если устройство может отображать ячейки 4х7 на рабочем столе, виджет в правом нижнем углу должен иметь координаты (3, 6).Также должно быть как-то возможно спросить устройство, сколько ячеек помещается в экран.

Или я что-то неправильно понимаю?

1 Ответ

5 голосов
/ 16 марта 2011

В Android 2.1 и более поздних версиях, с некоторыми избранными домашними экранами, вы можете узнать, где находится виджет приложения при нажатии на него с помощью getSourceBounds() - это значение присваивается любому Intent, который вы порождаете с помощью PendingIntentчерез setOnClickPendingIntent().

Однако:

  • это работает только на Android 2.1 и новее
  • не все домашние экраны могут делать это, так как это является частьюКод запуска IIRC
  • координаты в пикселях. IIRC
  • нет способа запросить домашний экран, чтобы узнать эту информацию каким-либо другим способом, так как не существует API для взаимодействия с домашним экраном.

Следовательно, я думаю, что ваша заявленная цель («В зависимости от того, будет ли она вверху рабочего стола или внизу, будут выбраны разные макеты для виджета»), я думаю, невозможна.

...