Запретить изменение ориентации Live Wallpaper при открытии приложения и изменении ориентации?
У меня проблема с ориентацией с Live Wallpaper, которую я написал. В основном холст будет вращаться в зависимости от приложения, открытого над ним. Я протестировал это и понял, что метод onSurfaceChanged() запускается, когда я возвращаюсь на главный экран из ранее открытого приложения, ориентация которого была изменена.
Я полагаю, что лучший вопрос: , почему моя текущая поверхность рабочего стола изменяется при открытии приложения и изменение ориентации? Есть ли способ предотвратить изменение ориентации Live Wallpaper? Спасибо, надеюсь, что имеет смысл?
Ответы
Ответ 1
Android-приложение перезапускает активность при изменении ориентации.
Вы можете использовать
- android: configChanges в вашем манифесте. Активность отключается и перезапускается по умолчанию, когда изменение конфигурации происходит во время выполнения, но объявление конфигурации с этим атрибутом предотвратит перезапуск активности. Вместо этого действие остается запущенным и вызывается его метод
onConfigurationChanged()
.
- используйте андроид: screenOrientatin= " портрет" или " пейзаж", это заставит приложение работать в указанном вами режиме. Однако это не помешает отключению активности и перезапуску.
Ответ 2
Вы можете обрабатывать ориентацию экрана из класса android.service.wallpaper.WallpaperService. Engine со следующим методом:
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)
... просто обрабатывайте событие соответствующим образом.
Вы НЕ МОЖЕТ добавить android: configChanges or android: screenOrientation к WallpaperService!
(Которые вы используете при создании живых обоев)
Я бы добавил это как комментарий к ответу "Анирудха", но у меня недостаточно репутации, чтобы сделать это.