Android多窗口分屏(原生方法)

article/2025/9/15 15:45:44

事实上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

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

Screenshot_2014-10-09-11-18-23
使用上面的命令你可以控制两个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的值给出了他们各自的显示区域坐标。


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

相关文章

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

转载请注明出处&#xff1a;https://blog.csdn.net/sunmmer123 忙过一段时间后&#xff0c;新需求又来了“多个应用/页面间在不用退出或者切换的情况下&#xff0c;可同时操作” 咋一听是不是很迷惑&#xff0c;简单来说“此时你在爱奇艺刷着剧&#xff0c;不退出爱奇艺的情况下…

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

安卓6.0系统分屏软件(xposed分屏插件)是一款支持分屏多任务软件&#xff0c;具有多窗口/双窗口功能&#xff0c;在众多智能分屏app中算是比较好用的啦&#xff0c;推荐给有需要的用户下载使用&#xff01; 安卓6.0多窗口分屏软件简介 XHFW3在6.0下能用&#xff0c;很多以前的xp…

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

转载请注明出处&#xff1a;https://blog.csdn.net/sunmmer123 Android实现一键开启自由窗口、分屏、画中画模式系列 一键开启自由窗口模式一键开启进入分屏模式一键开启画中画模式 通过上一篇博文&#xff0c;我们学习了一些多窗口模式的基本概念以及如何自定义入口开启自由窗…

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

1. 分屏窗口尺寸计算 1.1 窗口添加到WMS Activity首次启动之后&#xff0c;在其resume阶段会将自己的Window添加到WMS&#xff1a; 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 分屏模式-多窗口支持

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

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

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

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

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

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实现一键开启自由窗口、分屏、画中画模式——画中画模式

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

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

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

git 命令怎么创建新分支?

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

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

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

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

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

git命令之新建仓库

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

常见Git命令使用

常见Git命令使用 1.初始化创库 git init 2.git status 这个命令顾名思义就是查看状态&#xff0c; 这个命令可以算是使用最频繁的一个命令了&#xff0c; 建议大家没事就输入下这个命令&#xff0c; 来查看你当前 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 作为代码版本管理&#xff0c;早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送&#xff0c;遇到一些commit管理的问题就束手无策&#xff0c;或者用一些不优雅的方式…

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中的内容复…