Intereting Posts
Кордова видео / аудио не будет воспроизводиться из cdvfile: // URL-адреса после обновления до 3.3.0 Поиск местоположений в определенном городе в Google Местах Apis Создание двусторонней привязки с привязкой данных Android Таблица с переменной шириной столбца для строки (аналогично UICollectionView для iOS) Как создать анимированный GIF из JPEG в Android (разработка) Проблема с CoordinatorLayout и ImageView, которая регулирует ширину при прокрутке Как установить кнопку не кликабельную во время анимации на Android? Как изменить фон переключателя в Android? Что такое ContentProviderOperation, используемое для Тема не применяется к программно добавленным представлениям? Запись текстового файла на SD-карту не выполняется Ошибка: выполнение выполнено для задачи: app: transformClassesWithMultidexlistForDebugAndroidTest ' Отображение скрытой анимации панели инструментов не гладкой Проверьте, добавлено ли веб-приложение на главный экран Android В Android, как я могу избежать использования метода onStart из-за устаревания?

Вращение экрана в реальном времени

В настоящее время я работаю над живыми обоями, которые очень интенсивны и не очень хорошо справляются с вращением экрана.

Фактически обои уничтожаются и отображает пустой экран без вызова onSurfaceChanged!

Вот что я имею в методе onSurfaceChanged:

@Override public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub super.onSurfaceChanged(holder, format, width, height); mRatio = (float) width / height; if (mRatio > 1) { orientation = 0; } if (mRatio < 1) { orientation = 1; } setRunning(true); Log.i(TAG, "Screen Rotation..."); mHandle.post(r); } 

Я уверен, что этот метод не вызван, потому что сообщения журнала нет.

Почему это происходит и какие методы обработки вращения экрана? Может быть, мои живые обои настолько интенсивны, что пустоту нельзя назвать?

Кроме того, onVisibilityChanged также не вызывается, и когда я открываю приложения на эмуляторе, нет сообщения журнала:

 @Override public void onVisibilityChanged(boolean visible) { // TODO Auto-generated method stub super.onVisibilityChanged(visible); if (visible) { setRunning(true); Log.i(TAG, "Visible..."); mHandle.postDelayed(r, 2000); } else { setRunning(false); Log.i(TAG, "Invisible..."); mHandle.removeCallbacks(r); } } 

В своем манифесте заявите:

  <activity android:name=".YourActivityName" android:configChanges="keyboardHidden|orientation" </activity> 

Ваш метод onSurfaceChanged должен быть вызван только в том случае, если объявить configChanges в манифесте!

Что касается второй проблемы: onVisibilityChanged – это не то, что вы ожидаете от имени:

Called when the window containing has change its visibility (between GONE, INVISIBLE, and VISIBLE). Note that this tells you whether or not your window is being made visible to the window manager; this does not tell you whether or not your window is obscured by other windows on the screen, even if it is itself visible.

Вам нужно проверить, является ли ваше приложение «видимым» для пользователя через onPause() и onResume()