Я работаю над приложением для потокового видео, таким как YouTube. Я использую встроенную функцию потоковой передачи VideoView.
Я использую Fragments, поэтому на телефонах есть оболочка Activity вокруг VideoFragment. Пользовательский интерфейс должен быть похож на YouTube, поэтому в портретной ориентации вверху воспроизводится видео, а под ним несколько дополнительных видов и т. д., а в альбомной ориентации все, что есть, — это полноэкранное видео.
У меня проблемы с изменением ориентации, и я, очевидно, хочу, чтобы видео продолжало воспроизводиться при изменении ориентации. Как я уже сказал, видео передается в потоковом режиме, поэтому простое сохранение текущего времени видео не поможет. Единственный способ, которым мне удалось это сделать, - заставить не перезапускать активность с android:configChanges="keyboardHidden|orientation|screenSize"
, установленным для активности-оболочки в манифесте.
Таким образом, это прекрасно работает, но терпит неудачу, когда я хочу иметь разные макеты для layout
и layout-land
, как это делает YouTube, потому что активность не перезапускается, поэтому у фрагмента нет возможности загрузить новый макет, насколько я знать.
Спасибо!
theres no oportunity for fragment to load new layout
Это можно сделать, но тогда может возникнуть проблема:so just persisting the current video time is not going to cut it
. - person Vikram   schedule 04.09.2013onConfigurationChanged(Configuration)
в своей деятельности. Он будет вызываться при изменении ориентации. Создайте новый фрагмент, который содержит вашу программу просмотра видео, и используйтеFragmentTransaction.replace(int, Fragment)
для переключения фрагментов. Теперь внутриonCreateView()
этого фрагмента у вас должен быть операторif-else
, проверяющий текущую ориентацию:if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // inflate landscape view } else { // inflate load portrait }
. Я не думаю, что это решит вашу проблему, но вы можете попробовать. - person Vikram   schedule 04.09.2013This can be done, but then, this might be a problem: so just persisting the current video time is not going to cut it
: некоторые полезные ссылки: изменение ориентации Android VideoView с буферизованным видео, Изменение макета при изменении ориентации во время выполнения во фрагменте без пересоздания вида. - person Vikram   schedule 04.09.2013