Android-多窗口

Google_MultiWindowPlayground

多窗口支持

Android N 添加了对同时显示多个应用窗口的支持。
在手持设备上,两个应用可以在“分屏”模式中左右并排或上下并排显示。
在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续播放视频。

如果您使用 N Preview SDK 构建应用,则可以配置应用处理多窗口显示的方法。 例如,您可以指定 Activity 的最小允许尺寸。 您还可以禁用应用的多窗口显示,确保系统仅以全屏模式显示应用。

分屏显示的情况下,按住中间区域是可以调整应用所占的宽度的。

多窗口生命周期
多窗口模式不会更改 Activity 生命周期。
在多窗口模式中,在指定时间只有最近与用户交互过的 Activity 为活动状态。 该 Activity 将被视为顶级 Activity。 所有其他 Activity 虽然可见,但均处于暂停状态。 但是,这些已暂停但可见的 Activity 在系统中享有比不可见 Activity 更高的优先级。 如果用户与其中一个暂停的 Activity 交互,该 Activity 将恢复,而之前的顶级 Activity 将暂停。

针对多窗口模式配置应用

android:resizeableActivity

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

android:resizeableActivity=[“true” | “false”]

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

如果您的应用面向 Android N,但未对该属性指定值,则该属性的值默认设为 true。

注意:根 Activity 的属性设置适用于其任务栈中的所有 Activity

android:supportsPictureInPicture
在清单文件的 节点中设置该属性,指明 Activity 是否支持画中画显示。 如果 android:resizeableActivity 为 false,将忽略该属性。

android:supportsPictureInPicture=[“true” | “false”]

布局属性
对于 Android N, 清单元素支持以下几种属性,这些属性影响 Activity 在多窗口模式中的行为:

android:defaultWidth
以自由形状模式启动时 Activity 的默认宽度。
android:defaultHeight
以自由形状模式启动时 Activity 的默认高度。
android:gravity
以自由形状模式启动时 Activity 的初始位置。请参阅 Gravity 参考资料,了解合适的值设置。
android:minimalHeight、android:minimalWidth
分屏和自由形状模式中 Activity 的最小高度和最小宽度。 如果用户在分屏模式中移动分界线,使 Activity 尺寸低于指定的最小值,系统会将 Activity 裁剪为用户请求的尺寸。

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

<activity android:name=".MyActivity"><layout android:defaultHeight="500dp"android:defaultWidth="600dp"android:gravity="top|end"android:minimalHeight="450dp"android:minimalWidth="300dp" />
</activity>

在多窗口模式中运行应用
Android N 添加了新功能,以支持可在多窗口模式中运行的应用。
多窗口模式中被禁用的功能

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

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

多窗口变更通知和查询
Activity 类中添加了以下新方法,以支持多窗口显示。 有关各方法的详细信息,请参阅 N Preview SDK 参考。

Activity.isInMultiWindowMode()
调用该方法以确认 Activity 是否处于多窗口模式。
Activity.isInPictureInPictureMode()
调用该方法以确认 Activity 是否处于画中画模式。

注:画中画模式是多窗口模式的特例。 如果 myActivity.isInPictureInPictureMode() 返回 true,则 myActivity.isInMultiWindowMode() 也返回 true。

Activity.onMultiWindowModeChanged()
Activity 进入或退出多窗口模式时系统将调用此方法。 在 Activity 进入多窗口模式时,系统向该方法传递 true 值,在退出多窗口模式时,则传递 false 值。
Activity.onPictureInPictureModeChanged()
Activity 进入或退出画中画模式时系统将调用此方法。 在 Activity 进入画中画模式时,系统向该方法传递 true 值,在退出画中画模式时,则传递 false 值。

每个方法还有 Fragment 版本,例如 Fragment.isInMultiWindowMode()。

进入画中画模式
如需在画中画模式中启动 Activity,请调用新方法 Activity.enterPictureInPictureMode()。 如果设备不支持画中画模式,则此方法无效。 如需了解详细信息,请参阅画中画文档。

在多窗口模式中启动新 Activity
在启动新 Activity 时,用户可以提示系统如果可能,应将新 Activity 显示在当前 Activity 旁边。 要执行此操作,可使用标志 Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT。 传递此标志将请求以下行为:

如果设备处于分屏模式,系统会尝试在启动系统的 Activity 旁创建新 Activity,这样两个 Activity 将共享屏幕。 系统并不一定能实现此操作,但如果可以,系统将使两个 Activity 处于相邻的位置。
如果设备不处于分屏模式,则该标志无效。

如果设备处于自由形状模式,则在启动新 Activity 时,用户可通过调用 ActivityOptions.setLaunchBounds() 指定新 Activity 的尺寸和屏幕位置。 如果设备不处于多窗口模式,则该方法无效。

注:如果您在任务栈中启动 Activity,该 Activity 将替换屏幕上的 Activity,并继承其所有的多窗口属性。 如果要在多窗口模式中以单独的窗口启动新 Activity,则必须在新的任务栈中启动此 Activity。

支持拖放

用户可以在两个 Activity 共享屏幕的同时在这两个 Activity 之间拖放数据 (在此之前,用户只能在一个 Activity 内部拖放数据)。 因此,如果您的应用目前不支持拖放功能,您可以在其中添加此功能。

N Preview SDK 扩展了 android.view 软件包,以支持跨应用拖放。 有关以下类和方法的详细信息,请参阅 N Preview SDK 参考。

android.view.DropPermissions
令牌对象,负责指定对接收拖放数据的应用授予的权限。
View.startDragAndDrop()
View.startDrag() 的新别名。要启用跨 Activity 拖放,请传递新标志 View.DRAG_FLAG_GLOBAL。 如需对接收拖放数据的 Activity 授予 URI 权限,可根据情况传递新标志 View.DRAG_FLAG_GLOBAL_URI_READ 或 View.DRAG_FLAG_GLOBAL_URI_WRITE。
View.cancelDragAndDrop()
取消当前正在进行的拖动操作。只能由发起拖动操作的应用调用。
View.updateDragShadow()
替换当前正在进行的拖动操作的拖动阴影。只能由发起拖动操作的应用调用。
Activity.requestDropPermissions()
请求使用 DragEvent 中包含的 ClipData 传递的内容 URI 的权限


简单配置代码
build.gradle文件

android {compileSdkVersion 24buildToolsVersion '23.0.3'defaultConfig {applicationId "com.android5"minSdkVersion 24targetSdkVersion 24versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}

清单文件:

 <activity
            android:name=".ScrollingActivity"android:resizeableActivity="true"android:label="@string/app_name"><!--<layoutandroid:defaultWidth="200dp"android:defaultHeight="200dp"android:gravity="top|end"android:minWidth="50dp"android:minHeight="50dp"></layout>--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

效果图:

Android7.0分屏功能相关推荐

  1. android分屏模式_安卓 7.0 分屏功能详解:三种模式,想分就分

    IT之家讯 8月18日消息,安卓7.0的一大特色就是自带全新分屏功能,分为多画面显示模式.画中画模式和自由分屏模式三种,本文将详细介绍这三种模式. 多画面显示模式 启动该模式的方法有两种,一是在后台应 ...

  2. Android7.0 分屏多窗口

    Android N 添加了对同时显示多个应用窗口的支持. 在手持设备上,两个应用可以在"分屏"模式中左右并排或上下并排显示. 在电视设备上,应用可以使用"画中画" ...

  3. android分屏资源适配,android7.0分屏适配

    版权声明:本文为原创文章,未经允许不得转载! 一.分屏 进入分屏模式:Android N允许用户一次在屏幕中使用两个App.用户可以左右并排/上下摆放两个App来使用,还可以左右/上下拖拽中间的分割线 ...

  4. android6.0分屏插件,xposed分屏模块安卓6.0下载

    安卓6.0系统分屏软件(xposed分屏插件)是一款支持分屏多任务软件,具有多窗口/双窗口功能,在众多智能分屏app中算是比较好用的啦,推荐给有需要的用户下载使用! 安卓6.0多窗口分屏软件简介 XH ...

  5. 小米android 7 分屏,官方确认!小米手机分屏功能7月上线:支持多款机型

    今天下午的新品发布会,小米发布了第二代大屏续航手机小米Max 2,采用6.44英寸大屏.5300mAh容量电池(支持给其它设备充电),主摄像头使用了和小米6一样的索尼IM386传感器.售价方面,,4G ...

  6. 小米android n 分屏,小米官方确认这几款手机都支持分屏功能

    原标题:小米官方确认这几款手机都支持分屏功能 [手机中国 新闻]随着MIUI 9的发布,让很多小米手机用户欣喜若狂.有些遗憾的是,本以为分屏功能会是标配,可即便是升级了MIUI 9,也只有部分机型能够 ...

  7. android6 miui9分屏,小米官方确认!这些手机都支持分屏功能

    2017 年 7 月 26 日,小米在北京召开发布会,连同旗下新机一起发布了 MIUI 9,以 " 快如闪电 " 为设计宗旨,除此之外还发布了许多新功能,官方称,MIUI 分屏模式 ...

  8. arcgis 实现分屏功能

    arcgis 实现分屏功能 利用arcgis api for javascript 4.16地图服务,实现地图分屏 <html><head><meta charset=& ...

  9. 谈谈Edge浏览器新出的分屏功能

    谈谈Edge浏览器新出的分屏功能 前言   在 2023 年三月份微软为 Microsoft Edge 浏览器的稳定版本带来了一个新功能 -- 分屏浏览 (Split Screen),此功能允许用户在 ...

最新文章

  1. CSS-用伪元素制作小箭头(轮播图的左右切换btn)
  2. Python中的sort() key含义
  3. Java之基础(1) - 编程中“为了性能”尽量要做到的一些地方
  4. 【干货】eval函数用法解释及对开发者的便利讲解
  5. Python小游戏(并夕夕版飞机大战)
  6. CentOS7.2.1511 安装Mysql-5.7.13
  7. Rxjs的flatMap使用
  8. 游侠怎么设置java路径_Java获取当前路径的代码
  9. opencv 从原始的图像中找出ROI区域
  10. 华东理工大学和暨南大学计算机考研,2016华东理工大学VS暨南大学 孰强孰弱?...
  11. es的node内存设置
  12. Apache Kylin 入门 1 - 基本概念
  13. python爬取妹子图片1_利用爬虫爬取清纯妹子图片
  14. python酷q机器人_NoneBot+酷Q,打造QQ机器人
  15. 路由器DNS根域名解析失败
  16. 用for循环打印输出数据三角形图形
  17. excel单元格内容拆分_Excel分列解决不了的问题,VBA轻松搞定之拆分单元格
  18. python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片
  19. BeanCopy和BeanCopier在实际开发中的使用(属性copy效率优化)
  20. 批量提交网站url到百度进行提升索引量的方法

热门文章

  1. a标签 靠右对齐,a标签中的图标和文字如何上下对齐
  2. nginx反向代理替换URL
  3. 俞敏洪:不要为眼前的得失而抓狂
  4. wow服务器维护8月14,8月14日服务器例行维护公告(已完成)
  5. 中国计算机学会推荐国际学术期刊
  6. xxl-job-admin实践
  7. anaconda创建虚拟环境并安装tensorflow
  8. java 根据特殊字符截取字符串_java中如何截取特殊字符串
  9. Twitter – 媒体与沉默的大多数
  10. 二叉树,满二叉树,完全二叉树 概念及其性质