转载请注明出处:https://blog.csdn.net/sunmmer123

Android实现一键开启自由窗口、分屏、画中画模式系列

  • 一键开启自由窗口模式
  • 一键开启进入分屏模式
  • 一键开启画中画模式

通过上一篇博文,我们学习了一些多窗口模式的基本概念以及如何自定义入口开启自由窗口模式的知识
接着,我们学习一下分屏模式的知识点,我们如何利用原理,自定义入口一键开启进入分屏模式


分屏模式

多窗口模式的默认体验是分屏模式,在这种模式下,系统会从设备中间以横向或纵向方式划分系统界面。

  • 原生默认进入分屏入口是点击右下角的方块,进入任务管理器,长按一个App的标题栏,将其拖入屏幕的高亮区域,这个App就进入了分屏模式。看下效果图:
  • 不同厂商手机系统入口被改了都不一样,有Android设备的小伙伴可自行体验一下

现在自定义入口,可一键开启分屏,先看下效果图:

  • 点击分屏按钮,进入分屏模式,并且目标页面/应用在不同窗口

1、分屏模式与自由窗口模式的区别

这其实从效果图可以显而易见看出来了

  • 分屏只能根据设置的屏幕方向上下或者左右拖动分界线来调整窗口大小,并且方向定好不能改变,而自由窗口是可以随意拖动并且放大缩小的。
  • 分屏只提供两个 Activity 窗格来放置应用,但是自由窗口模式是支持多个的

2、如何配置对分屏的模式支持

首先想要支持分屏模式或者自由窗口模式都需要这样做

  • 项目构建时,build.gradle需要适配Android N,比如:
  • 在AndroidManifest.xml中的或者标签下设置新的属性android:resizeableActivity=“true”,如果你不想你的应用能被分屏/自由模式,就设置为false,默认是true的。
  • 可以设置layout新属性,设置分屏/自由模式下的默认的尺寸、最小的尺寸

3、如何一键开启分屏模式

如同开启FreeFrom模式一样,通过反射的方法设置ActivityOptions来控制启动的Task的栈边界的大小,分屏模式下窗口里面的Activity所处的栈ID是DOCKED_STACK_ID。

  • 先设置setDockCreateMode:对应的意思是设置屏后显示的位置 ,分别有这几种位置:
  • 然后设置setLaunchStackId,分屏模式下窗口里面的Activity所处的栈ID是DOCKED_STACK_ID,也就是3。
  • 所以整体设置代码如下:
  • 最后和开启自由窗口模式一样启动应用/页面就可以了

其实多窗口框架的核心思想也就是分栈和设置栈边界,不管我们是开启自由窗口模式还是分屏模式,重要的点都是通过setLaunchStackId设置对应栈ID,不同的Activity可能归属于不同的Stack,但是具有相同的Stack ID。
具体的从系统源码角度分析分栈以及设置栈边界的步骤和原理,可以通过这篇博客学习:Android 多窗口框架全解析

在分屏模式里还有一个很好的知识点:支持拖放,也就是说当两个 activity 共享屏幕时,用户可在二者之间拖放数据。
后续有时间我会继续补上

  • 当然,大家也可以参照开发文档进一步学习一下:多窗口开发文档

至此,关于分屏的知识点以及如何开启就说到这,我们接下去,来看看画中画模式的相关内容

  • 一键开启画中画模式

Android实现一键开启自由窗口、分屏、画中画模式——分屏模式相关推荐

  1. Android实现一键开启自由窗口、分屏、画中画模式——画中画模式

    转载请注明出处:https://blog.csdn.net/sunmmer123 Android实现一键开启自由窗口.分屏.画中画模式系列 一键开启进入自由窗口模式 一键开启进入分屏模式 一键进入画中 ...

  2. Android实现一键开启自由窗口、分屏、画中画模式——自由窗口模式

    转载请注明出处:https://blog.csdn.net/sunmmer123 忙过一段时间后,新需求又来了"多个应用/页面间在不用退出或者切换的情况下,可同时操作" 咋一听是不 ...

  3. ios分屏_苹果分屏功能怎么用?教你一键开启iPad分屏

    苹果的分屏功能怎么用?很多苹果手机用户都对分屏的功能颇感兴趣,试问谁不想一边看剧一边还能刷微信回消息呢? 遗憾的是,现在iPhone的用户还只能继续对安卓手机羡慕下去,当前iOS系统并不支持直接分屏, ...

  4. android 全局 窗口,miui12全局自由窗口app

    miui12全局自由窗口app是小米最新更新的系统引用了全局自由窗口功能,在你玩游戏或者是追剧的时候,都可以直接在一个页面上聊天,无需切换那么麻烦,支持多种机型进行使用这个功能,多种模式你可以自由的切 ...

  5. 计算机的录像功能在哪里找,电脑自带录屏软件在哪?一键开启视频录制的方法...

    电脑自带录屏软件在哪?一键开启视频录制的方法 2019年07月19日 12:50作者:黄页编辑:黄页 分享 电脑自带录屏软件在哪?众所周知,不同种类的手机都会有自带的录屏功能.对于电脑来说也不例外,在 ...

  6. android盒子分屏,分屏智投投屏神器免费版 1.7.4 安卓免费版

    分屏智投app能够让用户们快速完成设备投屏功能,多个屏幕管理让大家快速连电视/投影仪等等.更加方便的投屏管理功能,设置窗口分辨率更大化的提高投屏效率,能够同时投屏多个窗口! 分屏智投介绍 多台手机可通 ...

  7. android小窗口播放视频,[安卓] 支持投屏、电视台和小窗口的视频播放器:MoboPlayer...

    MoboPlayer 是一款国产安卓端视频播放器,和老牌播放器 MXPlayer 相比,有一些自己独特的功能,还是蛮实用的.MoboPlayer 播放视频时的界面如下,虫子为大家介绍其中几个比较有特色 ...

  8. android6 miui9分屏,小米手机如何分屏,MIUI9分屏模式如何开启?

    原标题:小米手机如何分屏,MIUI9分屏模式如何开启? 7月26日,小米在北京举办了新品发布会,发布了MIUI9操作系统,官方号称MIUI9是快如闪电,MIUI9在系统稳定性.流畅度.续航上面有很大提 ...

  9. android自由窗口freeform模式的实现

    freeform模式默认关闭,一些手机厂商开启了此功能,模拟器没有开启.依次执行下面命令: adb shell settings put global enable_freeform_support ...

最新文章

  1. 判断鼠标点击在div外时,更改背景图片
  2. proteus里面没有stm32怎么办_学习STM32日志——独立看门狗实验(20.06.23)
  3. webpack 使用教程--实时刷新测试
  4. Mysql性能调优工具Explain结合语句讲解
  5. 分布式实物实现方式_这是您完成实物产品设计任务的方式
  6. 日志框架实现数据采集分析和报警
  7. Python - 定制pattern的string模板(template) 具体解释
  8. samba服务器的设置
  9. google 手机号码校验库libphonenumber
  10. 博途的多步过程控制, 寄存器寻址
  11. 教大家一个可以用迅雷全速下载百度网盘文件的方法
  12. 利用matlab制作光栅动画(莫尔条纹动画)
  13. ps怎样查看图片坐标
  14. 期刊如何不分栏添加项目来源
  15. 单链表的插入操作(全)
  16. android apk格式,apk是什么文件格式?.apk文件怎么打开?
  17. JS Array.slice 截取数组的实现方法
  18. wince buid
  19. python函数测试_python绘制评估优化算法性能的测试函数
  20. 计算机科学与技术论文提纲,学分有关论文范例,与计算机科学与技术系相关毕业论文提纲范文...

热门文章

  1. 派工单系统 源码_青鸟报修云酒店设备报修管理系统
  2. narwal机器人_省时省心才见真章!Narwal云鲸J1智能扫拖机器人国内上市
  3. macos无法使用sudo_如何在macOS上使用Touch ID运行Sudo命令
  4. 分析问题的方法论—逻辑树法则
  5. [转帖]SPARC简介
  6. mips和sparc交叉编译工具链网址
  7. Ink脚本语言学习笔记(四)
  8. ipcam的几个概念
  9. 跟着鹏哥学C语言第一天
  10. STL源码剖析学习之increment、decrement、dereference实现源码