Как не останавливать живые обои для Android, пока активна настройка при использовании GLSurfaceView - PullRequest
2 голосов
/ 17 декабря 2010

Я пишу 3D живые обои для Android с помощью знаменитой оболочки GLSurfaceView (http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers)

Когда я открываю экран настроек, чтобы изменить настройки обоев, настройки отображаются прозрачными на моем предварительном просмотре обоев. Это хорошо, потому что позволяет мне просматривать изменения настроек, которые я делаю. Это прекрасно работает, за исключением одной проблемы: живые обои останавливаются, пока на них есть настройки!

Как я могу избежать приостановки моих обоев?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2011

Я нашел обходной путь, который может быть полезен, в зависимости от того, как работают ваши обои ...

В моей операции с настройками, когда пользователь вносит изменения (например, перемещает ползунок, проверяет флажок), я передаю Intent с соответствующей информацией о настройках.

В методе onCreate живых обоев я динамически регистрирую BroadcastReceiver для получения этих событий настроек. Я отменил регистрацию этого получателя в onDestroy.

При получении трансляции настроек заставляю обои рисовать один кадр с новыми настройками. Поскольку активность настроек прозрачна, это сразу дает пользователю представление о том, как будут выглядеть обои с выбранными настройками.

Аналогичным образом, используя этот подход, вы можете запланировать анимацию обоев на несколько секунд после изменения настроек & mdash; или все, что подходит для вашей реализации.

0 голосов
/ 20 августа 2012

Я тоже нашел, что это немного раздражает.Я полностью предотвратил проблему, просто вызывая finish() в своей активности настроек каждый раз, когда вносятся изменения.Это позволяет мгновенно, полный предварительный просмотр обоев для пользователя.Достаточно всего лишь щелчка мышью, чтобы вернуться в настройки, чтобы внести еще одно изменение, и это дает довольно приятный пользовательский опыт.

 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
       finish();
 }

Я использовал это в своей линейке обоев. Здесь является примером:

...