转自:https://developer.android.com/about/versions/oreo/android-8.0.html
https://sspai.com/post/40569
https://www.digitaltrends.com/mobile/how-to-use-picture-in-picture-mode-in-android-8-oreo/
画中画模式
Android 8.0 允许以画中画 (PIP) 模式启动操作组件。PIP 是一种特殊的多窗口模式,最常用于视频播放。目前,PIP 模式可用于 Android TV,而 Android 8.0 则让该功能可进一步用于其他 Android 设备。
当某个 Activity 处于 PIP 模式时,它会处于暂停状态,但仍应继续显示内容。因此,您应确保您的应用在 onPause()
处理程序中进行处理时不会暂停播放。相反,您应在 onStop()
中暂停播放视频,并在 onStart()
中继续播放。如需了解详细信息,请参阅多窗口生命周期。
要指定您的 Activity 可以使用 PIP 模式,请在清单中将 android:supportsPictureInPicture
设置为 true。(从 Android 8.0 开始,如果您打算在 Android TV 或其他 Android 设备上支持 PIP 模式,则无需将 android:resizeableActivity
设置为 true;只有在您的 Activity 支持其他多窗口模式时,才需要设置 android:resizeableActivity
。)
API 变更
Android 8.0 引入一种新的对象 PictureInPictureParams
,您可以将该对象传递给 PIP 函数来指定某个 Activity 在其处于 PIP 模式时的行为。此对象还指定了各种属性,例如操作组件的首选纵横比。
现在,在添加画中画中介绍的现有 PIP 函数可用于所有 Android 设备,而不仅限于 Android TV。此外,Android 8.0 还提供以下函数来支持 PIP 模式:
Activity.enterPictureInPictureMode(PictureInPictureParams args)
:将操作组件置于画中画模式。操作组件的纵横比和其他配置设置均由 args指定。如果 args 中的任何字段为空,系统将使用您上次调用Activity.setPictureInPictureParams()
时所设置的值。指定的操作组件被置于屏幕的一角,屏幕剩余部分则被屏幕显示的上一个操作组件填满。进入 PIP 模式的 Activity 将进入暂停状态,但仍保持已启动状态。如果用户点按此 PIP 操作组件,系统将显示一个菜单供用户操作,而在操作组件处于 PIP 状态期间,不会理会任何触摸事件。
Activity.setPictureInPictureParams()
:更新操作组件的 PIP 配置设置。如果操作组件目前处于 PIP 模式,则会更新此设置;如果操作组件的纵横比发生变化,这非常有用。如果操作组件不处于 PIP 模式,则会使用这些配置设置,而不会考虑您调用的enterPictureInPictureMode()
函数。
「画中画」功能如何开启
画中画功能允许我们将视频内容以悬浮小窗口的样式运行于其他任务之上,近而更加方便从容地处理多项任务。目前,在 Android 8.0 中实现「画中画」功能的操作方法主要有如下两种:
Home 键
适用于 YouTube。如果你订阅了 YouTube Red 或 Google Play Music 服务,那么你的 YouTube 应用是支持「后台播放」功能的。
开启后台播放功能后,在 YouTube 中进行视频播放的同时,只用按下 Home 键回到桌面,正在观看的视频便会以画中画模式进行显示。
应用支持
适用于为画中画功能进行了特别适配的应用,如 VLC。
VLC 早在 Android 8.0 开发者预览版阶段就适配了画中画功能,只需下载安装最新版 VLC,前往设置 -> 附加设置 -> 视频
,找到Action on application switching
选项,勾选Play videos in Picture-in-picture mode
即可。
设置完成后,当我们就可以在使用 VLC 进行视频播放的过程中直接切换至主屏或其他应用,正在播放的视频内容随即就会以画中画模式继续播放。