1

У меня есть активность, которая показывает полноэкранный видеопросмотр (пока не поддерживает соотношение сторон). Он отлично работает на Android 2.3.7, но у меня возникают какие-то странные проблемы на Android 4 (и, вероятно, 3, я еще не проверял):Проблемы при показе полноэкранного видеоПосмотреть и изменить ориентацию

  1. По какой-то причине, если я установить тему в быть на весь экран, без заголовка (или панели действий), я получаю синий-иш (или беловатые?) градиент ниже VideoView, как показано здесь:

    weird gradient on full screen

    Соответствующее расположение здесь:

    изменить: на android 3 это не происходит.

  2. Когда я меняю ориентацию от портрета к пейзажу, он загружает все видео с самого начала. На Android 2.3.7 он продолжался без каких-либо задержек, как будто ничего не изменилось.

Соответствующая манифеста часть здесь:

<activity android:name=".activities.player_activity.PlayerActivity" android:configChanges="keyboardHidden|orientation" 
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" android:screenOrientation="sensor"/> 

Обратите внимание, что на Android 3, вращая таблетки ничего не делает, так что нет никаких изменений ориентации.

Как я должен справляться с этими проблемами? Демоверсии API, похоже, не обновляются для обработки этих случаев.

Мой проект был протестирован: nexus one (android 2.3.7), xoom (android 3), галактика S3 (android 4).


Чтобы исправить номер 1, я просто изменил тему, которая не имеет фона. Странно, что так оно и есть на устройстве. Интересно, похоже ли это на другие устройства Android 4. Для того, чтобы создать тему, я создал файл «theme.xml» в папке «Рез/значения /», и написал там:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.FullScreenNobarsNoBackground" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"> 
    <item name="android:windowBackground">@null</item> 
    </style> 
</resources> 

Конечно, я также обновил манифест использовать новая тема.

ответ

1

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

Я предлагаю вам силы пребывания приложений в горизонтальном режиме, вы можете сделать это изменить атрибут следовать в деятельности:

<activity android:screenOrientation="landscape" /> 

Если вы хотите испытать ACTIVY изменить ориентацию, вы должны обработчиком изменения , Вы можете прочитать эту документацию how to handling runtime changes.

+0

но как насчет устройств, которые хранятся в портретном режиме? я не хочу заставить пользователя использовать ландшафтный режим. –

0

Боюсь, я не вижу градиента, о котором вы говорите на этом изображении. Но если это на весь экран, то это, вероятно, стандартный фон для тем Holo, и вы можете просто удалить его с помощью настраиваемой темы.

Что касается перезапуска при повороте, вы можете сохранить текущее время в onConfigurationChanged (..), а затем использовать VideoView.seekTo (..), чтобы вернуть его в нужное время в соответствующей части вашего кода. Однако я не знаю, почему это должно произойти в ICS, потому что вы не уничтожаете Activity.

+0

про фон, кажется, SGS3 "проблема". о проблеме с видео, вы его проверили? –