Минимизировать активность в предыдущих действиях в Android

Я занимаюсь разработкой компонента видеозвонка, который поддерживает обмен мгновенными сообщениями. Я хочу добавить опцию минимизации экрана видеовызова на нажатой спине и вернуться к обмену сообщениями activity сделать оба одновременно (WhatsApp, как функция). Проблема в том, что я не могу найти решение этой проблемы, так как возвращаюсь к предыдущему activity закончу текущий. Так как я могу override мой onBackpressed() так что я могу свести к минимуму вместо завершения экрана вызова activity (скажем, добавить его в уведомление) и вернуться к обмену сообщениями activity?

1 ответ

Решение

То, что вы хотите сделать, называется " картинка в картинке".

Android 8.0 (уровень API 26) позволяет запускать действия в режиме "картинка в картинке" (PIP). PIP - это особый тип многооконного режима, который в основном используется для воспроизведения видео. Это позволяет пользователю просматривать видео в небольшом окне, прикрепленном к углу экрана, во время навигации между приложениями или просмотра содержимого на главном экране.

Очень минималистичный пример:

1) Укажите в вашем AndroidManifest файл, деятельность которого поддерживает PIP:

<activity
      android:name=".VideoActivity"
      android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
      android:resizeableActivity="true"
      android:supportsPictureInPicture="true"/>

2) Запустите режим PIP в ответ на какое-либо действие пользователя, например, в onBackPressed():

override fun onBackPressed() {
   // Ideally you would want to enter PIP while a video is playing, so:
   val isVideoPlaying = // have a condition here that holds true while the video is playing

   if (isVideoPlaying) {
        enterPictureInPictureMode()
   } else {
        super.onBackPressed()
   }
}
Другие вопросы по тегам