Google представила новую функцию для Android под названием Picture in Picture Mode (PIPM).
Минимальные требования для работы этой функции на устройстве Android: Android 8.0 (уровень API 26).
PIP - это особый тип многооконного режима, который используется в основном для воспроизведения видео. Это позволяло пользователю смотреть видео, переходя к другим приложениям на главном экране.
Шаги по добавлению режима PIP в ваше приложение:
1. По умолчанию ОС Android не поддерживает автоматическую поддержку PIP для приложений. Чтобы добавить поддержку PIP, вам необходимо перейти в файл manifest и зарегистрировать свою активность, установив для android:supportsPictureInPicture
и android:resizeableActivity
значение true.
.
<activity android:name="NavigationActivity" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:configChanges= "screenSize|smallestScreenSize|screenLayout|orientation"/>
2. После настройки действия в manifest.xml.
Теперь пора переключить действие в режим PIP.
Чтобы запустить режим PIP для события, действие должно вызывать enterPictureInPictureMode ( ).
override fun onActionClicked(action: Action) { if (action.id.toInt() == R.id.lb_control_picture_in_picture) { activity?.enterPictureInPictureMode() return } }
3. В вашем приложении пользователь может выбрать новое видео при просмотре контента на главном экране, в то время как действие воспроизведения видео находится в режиме PIP. Воспроизведите новое видео в существующем действии воспроизведения в полноэкранном режиме вместо запуска нового действия, которое может запутать пользователя.
Чтобы обеспечить использование одного действия для запросов на воспроизведение видео и переключение в режим PIP или из него по мере необходимости, установите android:launchMode
действия на singleTask
в манифесте:
<activity android:name="VideoActivity" ... android:supportsPictureInPicture="true" android:launchMode="singleTask" ...
В своем действии переопределите onNewIntent()
и обработайте новое видео, при необходимости остановив воспроизведение любого существующего видео.
Обработка пользовательского интерфейса в режиме «Картинка в картинке»
Когда действие входит или выходит из режима картинка в картинке, система вызывает Activity.onPictureInPictureModeChanged()
или Fragment.onPictureInPictureModeChanged()
.
Вы должны переопределить эти обратные вызовы, чтобы перерисовать элементы пользовательского интерфейса действия. Имейте в виду, что в режиме PIP ваша активность отображается в небольшом окне. Пользователи не могут взаимодействовать с элементами пользовательского интерфейса в режиме PIP, и детали небольших элементов пользовательского интерфейса могут быть трудноразличимы. Действия по воспроизведению видео с минимальным пользовательским интерфейсом обеспечивают наилучшее взаимодействие с пользователем. В действии должны отображаться только элементы управления воспроизведением видео. Удалите другие элементы пользовательского интерфейса до того, как ваше действие перейдет в режим PIP, и восстановите их, когда ваше действие снова станет полноэкранным.
override fun onPictureInPictureModeChanged (isInPictureInPictureMode: Boolean,newConfig: Configuration) { if (isInPictureInPictureMode) { // Hide the full-screen UI (controls, etc.) while in picture-in-picture mode. } else { // Restore the full-screen UI. }