Android 8.0 Oreo 画中画模式

企业动态
Android 8.0 Oreo(API Level 26)允许活动启动画中画 Picture-in-picture(PIP)模式。PIP 是一种特殊类型的多窗口模式,主要用于视频播放。PIP 模式已经可用于 Android TV,而 Android 8.0 则让该功能可进一步用于其他 Android 设备。

Android 8.0 Oreo 画中画模式

Android 8.0 Oreo(API Level 26)允许活动启动画中画 Picture-in-picture(PIP)模式。PIP 是一种特殊类型的多窗口模式,主要用于视频播放。PIP 模式已经可用于 Android TV,而 Android 8.0 则让该功能可进一步用于其他 Android 设备。

画中画 Picture-in-picture(PIP)模式

当一个活动在画中画模式,它处于暂停状态,但应继续展示内容。出于这个原因,您应该确保您的应用程序不在的 onpause ( ) 中处理暂停播放。相反,您应该在 onstop ( ) 暂停播放·,在onstart ( ) 中继续播放。

指定您的活动可以使用画中画模式

从 Android 8.0 开始,如果您支持画中画模式,您不需要在 Manifest 中设 android:resizeableActivity 为 true,您只需要在其他多窗口模式中设置 android:resizeableActivity

Android 8.0(API Level 26)引入了一个新的对象 PictureInPictureParams,您通过画中画方法指定一个活动应该表现的画中画模式。该对象指定性能例如***纵横比。

现在不仅仅是在 Android TV 上,还可以在所有 Android 设备上使用 “添加画中画” 中描述的现有 PIP 方法。此外,Android 8.0 还提供以下方法来支持 PIP 模式:

  • Activity.enterPictureInPictureMode (PictureInPictureParams args) : 将活动放在画中画模式中。在 args 中指定活动的宽高比和其他配置设置。如果 args 中的任何字段为空,系统将使用您上次调用的 Activity.setPictureInPictureParams ( ) 。指定的活动被放置在屏幕的一个角落;屏幕的其余部分都填充了屏幕上的先前活动。进入画中画模式的活动进入暂停状态,但仍保持启动状态。 如果用户点击画中画活动,则系统显示给用户交互菜单,在画中画模式中,没有任何触摸操作可以回到活动。
  • Activity.setPictureInPictureParams ( ) : 更新活动的画中画配置。 如果活动当前处于画中画模式,这时将会更新,这在活动比发生变化的时候是很有用的。 如果活动不在画中画模式中,这些设置不管您是否调用了 enterPictureInPictureMode ( ) 方法,它都会生效。

Android 多窗口支持

两个应用在分屏模式中左右并排显示

△ 两个应用在分屏模式中左右并排显示

从 Android 7.0 Nougat 开始,Android 允许多个应用同时共享屏幕。例如:用户可以分屏显示应用,在左边查看网页,同时在右边写邮件。 这些功能取决于:

  • 运行 Android 设备具有分屏模式。 在此模式中,系统以左右并排或上下并排的方式分屏显示两个应用。 用户可以拖动两个应用之间的分界线,放大其中一个应用,同时缩小另一个。
  • 在运行 Android 的 Nexus Player 上,应用能以画中画模式显示,即在用户浏览网页或与其他应用交互的同时继续显示内容。
  • 较大设备的制造商可选择启用自由形状模式,在该模式中,用户可以自由调整各 Activity 的尺寸。 若制造商启用此功能,设备将同时具有自由形状模式和分屏模式。

用户可以通过以下方式切换到多窗口模式:

  • 若用户打开 Overview 屏幕并长按 Activity 标题,则可以拖动该 Activity 至屏幕突出显示的区域,使 Activity 进入多窗口模式。
  • 若用户长按 Overview 按钮,设备上的当前 Activity 将进入多窗口模式,同时将打开 Overview 屏幕,用户可在该屏幕中选择要共享屏幕的另一个 Activity。

用户可以在两个 Activity 共享屏幕的同时在这两个 Activity 之间拖放数据 (在此之前,用户只能在一个 Activity 内部拖放数据)。

针对多窗口模式配置应用

您可以对应用的 Activity 是否支持多窗口显示和显示方式进行配置。 您可以在 Manifest 文件中设置属性,以控制大小和布局。 根 Activity 的属性设置适用于其任务栈中的所有 Activity。 例如:如果根 Activity 已 android:resizeableActivity 设定为 true,则任务栈中的所有 Activity 都将可以调整大小。

android:resizeableActivity

在 Manifest 的 节点中设置该属性,启用或禁用多窗口显示:

  1. android:resizeableActivity=["true" | "false"] 

如果该属性设置为 true,Activity 将能以分屏和自由形状模式启动。 如果此属性设置为 false,Activity 将不支持多窗口模式。 如果该值为 false,且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。

多窗口模式中被禁用的功能

在设备处于多窗口模式中时,某些功能会被禁用或忽略,因为这些功能对与其他 Activity 或应用共享设备屏幕的 Activity 而言没有意义。 此类功能包括:

  • 某些系统 UI 自定义选项将被禁用;例如:在非全屏模式中,应用无法隐藏状态栏。
  • 系统将忽略对 android:screenOrientation 属性所作的更改。

布局属性

<layout>清单元素支持以下几种属性,这些属性影响 Activity 在多窗口模式中的行为:

(1)android:defaultWidth

以自由形状模式启动时 Activity 的默认宽度。

(2)android:defaultHeight

以自由形状模式启动时 Activity 的默认高度。

(3)android:gravity

以自由形状模式启动时 Activity 的初始位置。

(4)android:minimalHeight、android:minimalWidth

分屏和自由形状模式中 Activity 的最小高度和最小宽度。 如果用户在分屏模式中移动分界线,使 Activity 尺寸低于指定的最小值,系统会将 Activity 裁剪为用户请求的尺寸。

例如:以下节点显示了如何指定 Activity 在自由形状模式中显示时 Activity 的默认大小、位置和最小尺寸:

  1. <activity android:name=".MyActivity"> 
  2.     <layout android:defaultHeight="500dp" 
  3.           android:defaultWidth="600dp" 
  4.           android:gravity="top|end" 
  5.           android:minimalHeight="450dp" 
  6.           android:minimalWidth="300dp" /> 
  7. </activity> 

[[204032]]

以上就是 Android 画中画和多窗口功能的全部内容,如果您有其他的 Android 8.0 Oreo 兼容性的问题,我们非常感谢您在留言板里提出。 如果您觉得文章对身边的人有帮助,就动手转发吧,让更多的人关注我们并提出意见。

【本文是51CTO专栏机构“谷歌开发者”的原创稿件,转载请联系原作者(微信公众号:Google_Developers)】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2022-10-13 14:28:40

Brave浏览器画中画

2022-01-24 17:37:36

Chrome谷歌画中画

2021-09-19 11:15:26

Edge 93浏览器画中画

2021-03-18 08:50:06

谷歌Android 12

2021-03-19 07:07:03

Android 12Android系统谷歌

2021-12-09 11:59:27

Firefox 95浏览器画中画

2021-08-05 11:54:24

微软Edge浏览器

2012-05-17 16:34:28

思亚诺美满电子

2021-02-24 09:10:53

Firefox 86AVIFLinux

2021-02-25 17:20:27

火狐浏览器Firefox 86浏览器

2015-07-14 17:21:19

IOS 9分屏

2012-05-25 15:17:34

扫描仪评测

2023-05-11 17:44:20

2023-04-12 07:20:31

Windows 11安卓子系统

2023-02-03 14:21:19

Chrome浏览器

2023-03-08 16:35:07

Chrome浏览器

2023-07-10 06:18:28

Windows 11微软

2021-08-05 11:00:17

微软Edge浏览器

2023-07-21 07:23:15

Windows 11微软

2022-10-21 07:49:29

Windows微软
点赞
收藏

51CTO技术栈公众号