Картинка в картинке

«Картинка в картинке» (PiP) — это тип многооконного режима, предназначенный для действий, при которых воспроизводится полноэкранное видео. Он позволяет пользователю смотреть видео в небольшом окне, закрепленном в углу экрана, одновременно перемещаясь между приложениями или просматривая контент на главном экране.

Рисунок 1. Ваши пользователи могут продолжать пользоваться видео, даже если они не в вашем приложении.

Вынос

  • Убедитесь, что элементы пользовательского интерфейса скрыты и воспроизведение видео продолжается, когда действие происходит в режиме «картинка в картинке».
  • Отключите плавное изменение размера для невидеоконтента.
  • Действия по воспроизведению видео с минимальным пользовательским интерфейсом обеспечивают наилучшее взаимодействие с пользователем.
  • Не показывайте ничего, кроме видеоконтента.

Добавьте поддержку «картинка в картинке» в свое приложение.

По умолчанию система не поддерживает автоматически PiP для приложений, и ее необходимо объявить для поддержки этой функции.

Окно PiP появляется в самом верхнем слое экрана, в углу, выбранном системой.

Элементы управления

По умолчанию Android предоставляет элементы управления PiP для закрытия окна, его обратного развертывания в полноэкранный режим, настройки и воспроизведения мультимедиа. Ваше приложение может добавлять настраиваемые действия и соответствующие ресурсы значков, чтобы пользователи могли взаимодействовать с содержимым PiP.

Пользователь может отобразить эти элементы управления из меню окна PiP, коснувшись окна на мобильном устройстве или выбрав меню на пульте телевизора. Если в приложении есть активный сеанс мультимедиа , также отображаются элементы управления воспроизведением, паузой, следующим и предыдущим. Прочтите о том, как добавить эти элементы управления .

В режиме PiP ваша активность отображается в небольшом окне. В этом режиме пользователи не могут взаимодействовать с другими элементами пользовательского интерфейса вашего приложения, а детали мелких элементов пользовательского интерфейса в окне PiP могут быть трудно различимы.

Рисунок 2. Элементы управления PiP по умолчанию


Рисунок 3. Пример пользовательских элементов управления PiP.

Переходы

Плавный вход в анимацию PiP

Пользователь, запускающий режим PiP, приводит к тому, что текущее действие сжимается из полноэкранного режима в маленькое окно, в котором содержимое продолжает отображаться без наложения какого-либо пользовательского интерфейса.

В Android 12 были внесены значительные косметические улучшения в анимированные переходы между полноэкранным режимом и окнами PiP. Мы настоятельно рекомендуем внести все применимые изменения; как только вы это сделаете, эти изменения автоматически масштабируются на большие экраны, такие как складные устройства и планшеты, без каких-либо дополнительных действий.

Если ваше приложение не включает эти применимые обновления, переходы PiP по-прежнему работают, но анимация менее совершенна. Например, переход из полноэкранного режима в режим «картинка в картинке» может привести к исчезновению окна «картинка в картинке» во время перехода, прежде чем оно появится снова после завершения перехода.

Начиная с Android 12, флаг PictureInPictureParams.Builder.setAutoEnterEnabled(true) обеспечивает гораздо более плавную анимацию при переходе к видеоконтенту в режиме «картинка в картинке» с использованием навигации с помощью жестов — например, при пролистывании вверх из полноэкранного режима. Мы рекомендуем это сделать, если ваше приложение попадает в категорию приложений ENTERTAINMENT , COMMUNICATION или VIDEO_PLAYER .

Если ваше приложение не включает это изменение, переходы PiP с навигацией с помощью жестов по-прежнему работают, но анимация менее совершенна. Видео 1 показывает пример этого: окно сжимается до значка приложения и исчезает, а затем снова появляется после завершения перехода.

Видео 1. Менее совершенный переход, когда в PiP не реализован должным образом setAutoEnterEnabled

Видео 2 показывает пример того же перехода, но с добавленным в приложение setAutoEnterEnabled .

Видео 2. Полноценный опыт перехода

Плавное видеоизображение

Когда мы представили PiP в Android 8.0, sourceRectHint указывал область действия, которая видна после перехода в PiP — например, границы просмотра видео в видеоплеере. Начиная с Android 12, ОС использует sourceRectHint для реализации более плавной анимации как при входе в режим PiP, так и при выходе из него.

Если ваше приложение не предоставляет правильный sourceRectHint , переходы PiP по-прежнему работают, но анимация менее совершенна. Например, видео 3 демонстрирует менее совершенный пример перехода из полноэкранного режима в режим «картинка в картинке»: после того, как полноэкранное окно сжимается до окна «картинка в картинке», оно покрывается черным наложением, прежде чем снова показать видео.

Видео 3. Менее совершенный переход, когда в PiP не реализован должным образом sourceRectHint

Чтобы увидеть пример того, как выглядит анимация PiP при правильной реализации sourceRectHint , посмотрите видео 2 в предыдущем разделе.

Обратитесь к примеру Android Kotlin PictureInPicture как к справочному материалу, позволяющему обеспечить более совершенный переход.

Применение

Разрешите пользователям продолжать смотреть видео не только в вашем приложении, но и на своем устройстве. Ваше приложение контролирует, когда текущее действие переходит в режим «картинка в картинке» — это может быть такое взаимодействие, как выход из текущего представления или проведение пальцем вверх, чтобы вернуться домой.

Вот несколько примеров возможных действий:

  • Действие может перейти в режим PiP, когда пользователь нажимает кнопку «Домой» или проводит вверх по экрану «Домой». Таким образом, Карты Google продолжают отображать маршруты, пока пользователь одновременно выполняет другое действие.

    Рисунок 4. PiP используется для продолжения поиска пути.
  • Ваше приложение может переместить видео в режим «картинка в картинке», когда пользователь возвращается от видео для просмотра другого контента.

  • Ваше приложение может переключить видео в режим PiP, пока пользователь смотрит конец эпизода контента. На главном экране отображается рекламная или сводная информация о следующем эпизоде ​​сериала.

  • Ваше приложение может предоставить пользователям возможность ставить в очередь дополнительный контент во время просмотра видео. Видео продолжает воспроизводиться в режиме «картинка в картинке», а на главном экране отображается действие выбора контента.

Используйте модель взаимодействия, которая дополняет впечатления от просмотра, но не мешает. Например, если видео находится в конце эпизода контента, ввод PiP при выходе с главного экрана потребует дополнительных действий пользователя для возврата и остановки воспроизведения или перемещения по небольшим элементам управления.

В вашем приложении пользователь может выбрать новое видео при просмотре контента на главном экране, в то время как действие воспроизведения видео происходит в режиме PiP. Воспроизведите новое видео в существующем действии воспроизведения в полноэкранном режиме вместо запуска нового действия, которое может сбить с толку пользователя.

Пользователи могут перетащить окно PiP в другое место.

  • Коснитесь окна один раз, чтобы отобразить переключатель полноэкранного режима, кнопку закрытия, кнопку настроек и настраиваемые действия, предоставляемые вашим приложением (например, элементы управления воспроизведением).

    Рисунок 5. Элементы управления PiP по умолчанию
  • Дважды коснитесь окна, чтобы переключиться между текущим размером PiP и максимальным или минимальным размером PiP — например, двойное касание развернутого окна сворачивает его, и обратное также верно.

    Рис. 6. Переключение между минимальным и максимальным размером PiP двойным касанием.
  • Скройте окно, перетащив его к левому или правому краю. Чтобы удалить окно, коснитесь видимой части спрятанного окна или перетащите его.

    Рисунок 7: PiP спрятан
  • Измените размер окна PiP, используя масштабирование.

  • Проведите PiP вниз, чтобы удалить окно.

    Рисунок 8. Пролистывание вниз.

Дополнительные сведения о реализации PiP см. в документации разработчика «Картинка в картинке» .