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

article/2025/9/15 16:39:37

转载请注明出处: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 共享屏幕时,用户可在二者之间拖放数据。
后续有时间我会继续补上

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

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

  • 一键开启画中画模式

http://chatgpt.dhexx.cn/article/dfb6koAD.shtml

相关文章

AndroidQ 分屏窗口尺寸计算 (WMS部分)

1. 分屏窗口尺寸计算 1.1 窗口添加到WMS Activity首次启动之后,在其resume阶段会将自己的Window添加到WMS: void makeVisible() {if (!mWindowAdded) {ViewManager wm getWindowManager();//顶层DecorViewwm.addView(mDecor, getWindow().getAttribut…

android T分屏流程

概览 分屏前的order Task display areas in top down Z order:TaskDisplayArea DefaultTaskDisplayAreamPreferredTopFocusableRootTaskTask{919dc1b #1 typehome ?? U0 visibletrue visibleRequestedtrue modefullscreen translucentfalse sz1}mLastFocusedRootTaskTask{919…

android 分屏切换流程,一种切换分屏模式和多窗口模式的方法与流程

本发明涉及一种切换分屏模式和多窗口模式的方法,适用于常见的带有触摸的电子设备,包括但不限于在系统的用户界面中使用触摸的方法进行导航的电子设备。 背景技术: 分屏模式是一种将两个应用扩充到全屏幕的交互方法。近几年随着技术的发展,使用触摸作为设备的输入方式已经被…

Android 分屏模式-多窗口支持

第一篇博客请多多担待,测试一下。 来自于https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle Android N 添加了同时显示多个应用窗口的支持,在手持设备上,两个应用可以在“分屏”模式中左右并排或者上下并排显示。…

AndroidQ 分屏窗口模式 (AMS部分)

1. 多窗口 1.1 栈 Android7.0开始支持多窗口,多窗口分为三种,画中画,分屏,自由窗口,多窗口的核心原理其实就是分栈和设置栈边界, 分栈即把不同窗口模式下的Activity放在不同的ActivityStack中&#xff0…

Android分屏显示(多窗口支持) 开发总结

最近公司有分屏显示需求,遇到几点问题 ,在此记录,以做备忘。 我所谓的分屏显示,是在同一个界面内,分屏显示两个app的界面 或者是 注意点1: 系统好像没有获取应用显示的左右或者上下位置的方法,…

android安卓手机分屏多窗口实现方法

效果图 frameborder"0" allowtransparency"true" scrolling"no" vspace"0" hspace"0" style"display: block; position: static; padding: 0px; margin: 0px; border-style: none; vertical-align: baseline; width: 3…

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

转载请注明出处:https://blog.csdn.net/sunmmer123 Android实现一键开启自由窗口、分屏、画中画模式系列 一键开启进入自由窗口模式一键开启进入分屏模式一键进入画中画模式 通过前俩篇博文,我们学习了一些多窗口模式中的自由窗口模式与分屏模式的知识 最…

Android多窗口模式(分屏模式)

Android N 支持多窗口模式,或者叫分屏模式,即在屏幕上可以同时显示多个窗口。 在手机模式下,两个应用可以并排或者上下同时显示,如图 1 所示,屏幕上半部分的窗口是系统的 CLOCK 应用,下半部分是系统设置功能…

git 命令怎么创建新分支?

问题 比如:我们要以 dev 分支创建一个 test-branch 分支。 解决 1、在本地创建一个 test-branch 分支,并切换到该分支。 git checkout -b test-branch执行完,可以使用下面命令查看是否创建了该本地分支 git branch -a2、把分支推到远程仓…

git命令之快速搭建远程仓库

首先使用系统管理员账号登录远程服务器,具体步骤如下所示: 1 安装git应用程序 sudo apt-get install git 2 创建git用户组和git用户,具体命令如下所示: groupadd git adduser git -g git 3 修改git用户默认shell为git-shell…

Git命令常用操作 代码拉取和提交

常规的git命令就是以下几个语句 项目首次拉取 git clone 项目地址url拉取并同步代码到本地 git pull将本地所有更改的文件添加到缓存区 git add .添加备注,方便之后查看历史提交记录 git commit -m "本次提交备注信息"提交到git仓库 git push

git命令之新建仓库

一. 配置git用户名 1)安装git,配置用户名和邮箱 git config --global user.name "你的用户名" git config --global user.email "你的注册邮箱" 2)使用git config --global --list查看配置 二. 工作区操作 1&#x…

常见Git命令使用

常见Git命令使用 1.初始化创库 git init 2.git status 这个命令顾名思义就是查看状态, 这个命令可以算是使用最频繁的一个命令了, 建议大家没事就输入下这个命令, 来查看你当前 git 仓库的一些状态。 3.git add 文件名 将文件添加到git仓库…

git命令拉取代码

流程 1在本地clone项目【保持与远程仓库一致】 此时已绑定远程仓库 git clone xxxx2.添加文件 3.放到暂存区 git add .4.提交到本地仓库 git commint -m "提示信息"5推送到远程仓库 git push origin master其他命令 分支命令 分支就是每个人开发 互不影响 之后…

Git 命令之stash

Git 命令之stash 前言1 stash1.1 描述1.2 应用场景命令使用 前言 使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式…

git命令登录

1. 执行登陆用户名和密码命令 git config --global user.email "youexample.com" git config --global user.name "Your Name"2. 生成密钥对 ssh-keygen -t rsa -C "your_emailyouremail.com"3. 配置公钥私钥 然后将 .ssh/id_rsa.pub中的内容复…

git命令详解

一、简介 git作为应用广泛的一种分布式版本控制系统,其与svn比较最大的差别就是一个是分布式,一个是集中式,git在每个开发者的本地有一个完整的版本库,当在本地处理工作时,无需联网便可修改提交,当需要与其…

关于Git这一篇就够了

目录 前言 发展过程 集中式与分布式的区别 Debian/Linux安装Git 配置git环境:git config --global 创建本地空仓库:git init 新建文件添加到本地仓库:git add、git commit -m 改写提交:git commit --amend 查看历史提交日…

【信号与系统】—知识点:自由响应、强迫响应、暂态响应、稳态响应、零输入响应、零状态响应如何区分!

自由响应、强迫响应、暂态响应、稳态响应、零输入响应、零状态响应如何区分! 一、系统的响应划分 二、自由响应、强迫响应 自由响应和强迫响应是从数学上来分解的,没有什么物理意义,自由响应是齐次解,因为它的形式和激励无关&am…