事实上KitKat已经可以实现多窗口分屏,只是功能不全,Google并没有把这个功能提供给用户。

使用am stack boxes可以查看当前系统存在的Activity Stack:

1 am stack boxes

output:

Box id=1 weight=0.0 vertical=false bounds=[0,38][800,1208]
Stack=Stack id=1 bounds=[0,38][800,1208]taskId=2: com.android.calendar/com.android.calendar.AllInOneActivitytaskId=3: com.android.deskclock/com.android.deskclock.DeskClockBox id=0 weight=0.0 vertical=false bounds=[0,38][800,1208]
Stack=Stack id=0 bounds=[0,38][800,1208]taskId=1: net.lnmcc.launcher/net.lnmcc.launcher.Launcher

从上面的输出我们看到当前有两个Stack,id分别为0和1。在Stack 1中存在了两个Task,这两个Task分别是Calender和DeskClock应用。而Launcher则是在Stack 0中。实际上,你会发现Launcher始终独占Stack 0。Android有如下规则:

  • HOME stack: This is the stack with id = 0. This stack is used by the Launcher activities. When several users run Lanchers on one device, they will all belong to this stack. Other than that, systemui activities are also launched in it.
  • Applications stack: The id for this stack could be any number. All activities that are neither Launcher apps or systemui activities are run here (for all users).

得到了上面关于Stack和Task的信息后就可以按需要使用am stack create来进行分屏显示了:

1 am stack create 2 1 4 0.5

效果图如下(上半屏为日历应用,下半屏为时钟应用):


使用上面的命令你可以控制两个APP的相对位置,各自的大小等等。。。具体参数说明如下:

Syntax:

am stack create <int1> <int2> <int3> <float1>

  • <int1>: TASK_ID – the id for the existing task that you want a separate stack for.
  • <int2>: RELATIVE_STACK_BOX_ID – an existing stack id. The postion of the new stack will be relative to this one.
  • <int3>: POSITION – the relative position of the stack. Could be any one of these values:
    • 0: before relative stack (depends on RTL/LTR configuration)
    • 1: after relative stack (depends on RTL/LTR configuration)
    • 2: to left of relative stack
    • 3: to right of relative stack
    • 4: above relative stack
    • 5: below relative stack
    • 6: displayed on a higher layer than the relative stack (unused)
    • 7: displayed on a lower layer than the relative stack (unused)
  • <float1>: WEIGHT – a number between 0.2 – 0.8 inclusive

再次运行am stack boxes来查看一下究竟发生了什么:

1 am stack boxes

output:

Box id=1 weight=0.5 vertical=true bounds=[0,38][800,1208]
First child=Box id=2 weight=0.0 vertical=false bounds=[0,38][800,623]Stack=Stack id=2 bounds=[0,38][800,623]taskId=2: com.android.calendar/com.android.calendar.AllInOneActivity
Second child=Box id=3 weight=0.0 vertical=false bounds=[0,623][800,1208]Stack=Stack id=1 bounds=[0,623][800,1208]taskId=3: com.android.deskclock/com.android.deskclock.DeskClockBox id=0 weight=0.0 vertical=false bounds=[0,38][800,1208]
Stack=Stack id=0 bounds=[0,38][800,1208]taskId=1: net.lnmcc.launcher/net.lnmcc.launcher.Launcher

我们看到Box 1中有了2个子Box,分别用来存放Calendar和DeskClock,并且bounds的值给出了他们各自的显示区域坐标。

Android多窗口分屏(原生方法)相关推荐

  1. 在android上启动分屏的方法

    android7.0上已经支持分屏,但是国内有的手机虽然升到了7.0,但是还不能使用分屏功能. 在这种情况下,可以使用命令启动分屏, 并且是无需root的. 首先要先连接adb,不会连接的请自行百度. ...

  2. android分屏模式_浅谈 Android 7.0 多窗口分屏模式的实现

    从 Android 7.0 开始,Google 推出了一个名为"多窗口模式"的新功能,也就是我们常说的"分屏模式".那么,这个功能有什么用呢?作为开发者,我们又 ...

  3. Android N App分屏模式完全解析

    Android N App分屏模式完全解析(上) 发表于 2016-03-12 |  分类于 技术 | 上手了Android N Preview,第一个不能错过的新特性就是App分屏的支持.Andro ...

  4. Android N App分屏模式完全解析(上)

    上手了Android N Preview,第一个不能错过的新特性就是App分屏的支持.Android7.0原生系统就可以支持两个App横屏并排或者竖屏上下摆放了.第二个新特性就是在Android TV ...

  5. android n进入分屏代码分析_不只是分屏多任务,Android N 的这些特性也与你有关...

    本文来自 TECH2IPO / 创见,作者@DavidZh 2016 年 Google I/O 大会开放注册之后,Google 出人意料地放出了下一代移动操作系统 Android N 的开发者版本. ...

  6. ubuntu分屏软件_Ubuntu终端多窗口分屏Terminator

    1.安装 Terminator最大的特点就是可以在一个窗口中打开多个终端 sudo apt-get install terminator 2.快捷键 Ctrl+Shift+E    垂直分割窗口 Ct ...

  7. 三星s20计算机怎么添加到桌面,三星s20+怎么分屏?三星s20系列多窗口分屏设置操作步骤...

    三星s20+怎么分屏?三星s20系列多窗口分屏设置操作步骤来讲一讲吧,三星S20是一款屏幕体验超好的智能手机,它可以运行多窗口,让我们在分屏视图上同时运行两个应用程序.比如我们能一边聊天,一边看视频, ...

  8. excel多窗口分屏并列显示

    excel多窗口分屏显示 浏览:183 | 更新:2014-07-30 17:35 | 标签: excel 1 2 3 4 分步阅读 与WORD可以同时打开多个编辑窗口不同,在编辑excel时通常只能 ...

  9. Win11的两个实用技巧系列之关闭分屏模式方法

    怎么关闭Win11电脑分屏模式?Win11关闭分屏模式方法 有用户在使用电脑的时候不小心开启了电脑的分屏模式,导致自己无法正常的进行电脑操作了,本文就为大家带来了Win11关闭分屏模式方法,一起看看吧 ...

最新文章

  1. 在JAVA中线程到底起到什么作用
  2. Windows 2000配置Web服务器
  3. 环京机柜数量惊人 数据中心建设应避免一哄而上
  4. UNIX/Linux-进程控制(实例入门篇)
  5. jpa一级缓存和二级缓存_了解一级JPA缓存
  6. c#查找列表指定元素的索引_在集合的指定索引处插入元素 在C#中
  7. 【华为云实战开发】1.传统Java项目怎么能变得高大上?
  8. 下载mrt需要java_MRT Lab | 下载
  9. 四、时间 .认知 .迭代
  10. 计算机无法正常更新,电脑时间不能自动更新怎么回事?电脑时间校准同步方法介绍...
  11. 嵌入式文件系统固件img制作与解包
  12. 对vulhub靶机THM-ContainMe-v4的渗透测试过程
  13. 【程序员面试金典】有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意这次的网格中有些障碍点是不能走的。
  14. 失焦事件触发_js中表单的聚焦失焦事件
  15. Mac 命令行关闭和打开蓝牙
  16. 人工智能(Artificial Intelligence-AI)、机器学习(Machine Learning)、深度学习(Deep Learning)之间区别
  17. JS根据函数名字符串调用函数
  18. -day26 必备SQL和表关系及授权
  19. GEE实战 | 各种指数分析(植被、水体、建筑)
  20. PASCAL VOC目标检测数据集格式转化为COCO目标检测数据集格式

热门文章

  1. 双系统重装win10后恢复grub引导
  2. 5分钟搞定各类USB转serial串口驱动,最简单的方法
  3. CSS 样式书写顺序及规范
  4. vue中使用layui实现树形菜单增删改查功能
  5. 《Flutter 控件大全》第五十五个:InkWell和Ink
  6. java框架要求合同_java毕业设计_springboot框架的合同管理
  7. 基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】
  8. 天神娱乐:因资金状况紧张 未能清偿部分到期债务
  9. PDF文件提取单独页面
  10. 一个牛人给JAVA初学者的建议(很受用)