appWidget Orientation Code

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

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

Райан

3 ответа

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

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

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

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

В основном обновите виджет с помощью onConfigurationChanged() в Activity и добавьте android:configChanges="direction" для этого Activity в вашем манифесте. Плохо то, что это не охватывает все случаи использования.

Другие вопросы по тегам