Я создаю приложение для журнала, которое использует ViewPager
и прокручивает различные WebView
с.Большинство страниц - портретные, но некоторые из них можно рассматривать как альбомные.
Чтобы справиться с этим, я использую два метода в Activity
, удерживающих ViewPager
:
public void allowOrientationChanges() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
public void enforcePortrait() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
При этом мы гарантируем, что все страницы, которые просто должны быть портретными, остаются портретными (вызывая getActivity().enforcePortrait()
), а те, которые имеют портретную / альбомную ориентацию, проходят весь процесс перезапуска (вызывая getActivity().allowOrientationChanges()
).
Мы достигли точки, когда мы хотим добавить видео на некоторые страницы журнала.К сожалению, видео тег HTML5 не работает нормально, поэтому мы добавили VideoView
в наш макет.Функция для добавления сейчас:
- в портретной ориентации: отображение видео в определенном месте.( Готово! )
- в альбомной ориентации: создание видео в полноэкранном режиме (например, приложение YouTube).
Я пытался сделать это, и толькоЯ нашел способ изменить размер VideoView
в методе onConfigurationChanged()
в Activity
и уведомить fragment
об изменении конфигурации.Проблема в том, что добавление android:configChanges="orientation|keyboardHidden"
к Activity
будет «запрещать» воссозданные виды.
Два возможных решения, о которых я подумал:
- Изменение
android:configChanges
из кода и в зависимости от страницы, но я не смог найти, существует ли этот вызов. - Принудительное воссоздание метода
onConfigurationChanged()
.Я не знаю, как заставить воссоздание fragment
.
Есть идеи?