Как избежать паузы Android Live обои, в то время как настройка активность открыта при использовании GlsurfaceView

StackOverflow https://stackoverflow.com/questions/4469267

Вопрос

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

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

Как я могу избежать пауза обои?

Это было полезно?

Решение

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

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

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

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

Точно так же, используя этот подход, вы можете запланировать обои, чтобы оживить на несколько секунд после изменения настроек - или что -то, что подходит для вашей реализации.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top