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.
    }