Код ориентации appWidget

У меня есть код в виджете приложения, который я хочу запускать, когда ориентация телефона меняется на главном экране, например, когда клавиатура выдвигается. У меня есть изображение, которое я хочу изменить в представлении изображения в моем приложении. Я не могу использовать разные макеты, связанные с ориентацией (например, «макет» и «макет-земля»), потому что я не знаю имени файла изображения до выполнения, оно создается во время выполнения. Есть ли способ запускать код только в том случае, если отображается домашний экран, мой виджет приложения активен, а ориентация только что изменилась?

Я мог бы прослушать трансляцию configuration_change, но она будет запускаться каждый раз, когда телефон переключается в альбомную или портретную ориентацию, и я хочу, чтобы это происходило только при отображении домашнего экрана. Я не могу придумать хороший способ сделать это в Android. Спасибо

Райан


person rgrandy    schedule 10.01.2010    source источник
comment
Можно ли как-то узнать, находится ли домашний экран в верхней части стека активности? или узнать что есть?   -  person rgrandy    schedule 12.01.2010
comment
Теоретически да, см. stackoverflow.com/questions/6285410/, но главный экран — это конкретное действие, которое, вероятно, будет отличаться в зависимости от используемого вами устройства. .   -  person Dan J    schedule 25.08.2011


Ответы (3)


Нет хорошего способа сделать это для изображений, созданных во время выполнения.

Один из подходов заключается в создании обеих версий изображения и наличии двух видимых изображений ImageView в зависимости от используемого макета/макета. (Таким образом, RemoteView обновит оба ImageView, но будет виден только правильный.)

person Jeff Sharkey    schedule 22.01.2010

Джефф, в чем причина этого ограничения? Я хотел бы иметь возможность использовать изображения, созданные во время выполнения, или создавать RemoteView также во время выполнения, а не использовать предварительно скомпилированный XML - это так негибко.

person Pavel Lahoda    schedule 30.06.2010

Дополнительную информацию можно найти на странице http://groups.google.com/group/android-developers/browse_thread/thread/0eb7c016be05e0b9/d31b312e2fa8530d

В основном обновите виджет из onConfigurationChanged() в действии и добавьте android:configChanges="orientation" для этого действия в свой манифест. Плохо то, что это не охватывает все варианты использования.

person neu242    schedule 08.07.2010
comment
Вы можете использовать сервис вместо действия, чтобы сделать это. Это наверняка охватило бы больше вариантов использования, но все же есть случай, когда есть AppWidget, а ваше приложение закрыто. - person Mario Lenci; 07.11.2012