ANDROID N 分屏设置

本文介绍了Android N的分屏功能,包括用户如何开启分屏模式、分屏模式下的Activity生命周期、如何设置App支持分屏、布局属性以及拖拽内容等。在分屏模式下,Activity的生命周期未改变,但存在特定的暂停状态。Android N提供了新的API以便开发者处理分屏模式。同时,文章提醒开发者关注在分屏模式下App的功能和性能测试。

一 概述
android N的发布,最大的亮点有2个,原生系统对应用分屏的支持和快捷回复。现在只介绍分屏功能,目前最新的Android N系统支持横屏时让两个APP并排,竖屏时上下排放,而在Android TV上,原生系统也支持APP实现画中画。用户还可以在这两个App之间拖动数据,例如将一个App的Activity上的文件拖动到另外一个App的Activity中去。
用户开启分屏模式:
1点击右下角的方块,进入任务管理器,长按一个App的标题栏,将其拖入屏幕的高亮区域,这个App金进入了分屏模式。然后在任务管理器中选择另一个App,单击它使得这个App也进入分屏模式。
2打开一个App,然后长按右下角的方块,此时已经打开的这个App将进入分屏模式。然后在屏幕上的任务管理器中选择另外一个App,单击它使得这个App也进入分屏模式。
3最新发现:下拉通知栏,长按右上角的设置图标,将开启隐藏设置功能 “系统界面调谐器”,进入设置界面,最下方有系统界面调谐器选项,进入后选择 “Other”->“启用分屏上滑手势”,就可以从任务管理器上上滑进入分屏模式了。具体操作是 当一个App已经处于全屏模式时,用手指从右下角的小方块向上滑动 。这个设置将来在正式版可能有变化,所以还是不要太依赖。
二 分屏模式的生命周期
首先要说明的一点是,分屏模式没有改变Activity的生命周期。
官方说法是:在分屏模式下,用户最近操作、激活过的Activity将被系统视为 topmost 。而其他的Activity都属于 paused 状态,即使它是一个对用户可见的Activity。但是这些可见的处于 paused 状态的Activity将比那些不可见的处于 paused 状态的Activity得到更高优先级的响应。当用户在一个可见的 paused 状态的Activity上操作时,它将得到恢复 resumed 状态,并被系统视为 topmost 。而之前那个那个处于 topmost 的Activity将变成 paused 状态。
在分屏模式中,一个App可以在对用户可见的状态下进入 paused 状态,这与以往是不同的。所以你的App在处理业务时,也应该知道自己什么时候应该真正的暂停。例如一个视频播放器,如果进入了

Android 中,**无法通过编程直接启用分屏模式**,因为该功能由系统控制,并受到用户操作和设备厂商实现的限制。然而,可以请求系统允许当前 Activity 进入多窗口模式,从而为用户进入分屏状态提供支持。 ### 请求进入分屏模式 从 Android 7.0(API 级别 24)开始,应用可以通过调用 `Activity.enterPictureInPictureMode()` 或设置 `android:resizeableActivity` 属性来表明自身支持多窗口显示[^1]。虽然不能强制进入分屏模式,但可以请求系统将应用置于可被拖动调整大小的状态,从而让用户更容易将其放入分屏环境。 ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (isInMultiWindowMode()) { // 当前已处于多窗口模式(可能为分屏或自由窗口) } else { // 请求系统允许进入多窗口模式 requestWindowFeature(Window.FEATURE_ACTIVITY_CONTROLS); } } ``` 此外,在清单文件中声明 `android:resizeableActivity="true"` 可确保系统知道该 Activity 支持尺寸调整: ```xml <activity android:name=".MainActivity" android:resizeableActivity="true"> </activity> ``` 此配置允许系统将该 Activity 显示在分屏或多窗口环境中[^1]。 ### 监听多窗口状态变化 为了响应用户是否将应用移入或移出分屏模式,可以重写 `onMultiWindowModeChanged()` 方法: ```java @Override public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) { super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig); if (isInMultiWindowMode) { // 当前处于多窗口模式(可能是分屏或自由窗口) } else { // 退出了多窗口模式 } } ``` ### 设备兼容性与厂商定制 需要注意的是,不同设备厂商对分屏的支持程度不一致。部分设备(如三星 Galaxy 系列、华为 Mate 系列)提供了增强的多任务功能,包括自定义分屏手势和快捷入口。这些特性通常依赖于系统级接口,普通应用无法直接调用。因此,实际体验可能因设备而异[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值