Android 分屏模式-多窗口支持

article/2025/9/15 17:28:51

第一篇博客请多多担待,测试一下。
来自于https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle

这里写图片描述

Android N 添加了同时显示多个应用窗口的支持,在手持设备上,两个应用可以在“分屏”模式中左右并排或者上下并排显示。在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续播放视频。
如果您使用N preview SDK构建应用,则可以配置应用处理多窗口显示的方法。 例如,您可以指定 Activity 的最小允许尺寸。 您还可以禁用应用的多窗口显示,确保系统仅以全屏模式显示应用。

概述
Android N允许多个应用同时共享屏幕的前提条件是你的手持设备支持分屏模式。
先看一下效果:
竖屏
横屏

用户可以通过以下方式进入分屏模式:
点击右下角的任务管理,长按app,将其拖入提示的地方,这个App就进入了分屏模式。然后在任务管理器中选择另一个app,单击他进入。
拖动进入分屏模式

分屏模式的生命周期:
首先声明:分屏模式不会改变Activity的生命周期。
在分屏模式中,用户最近操作过的Activity为活动状态,该Activity将被视为顶级的Activity,处于onResume状态,其他的处于onPause状态。
注:在多窗口模式中,用户仍可以看到处于暂停状态的应用。 应用在暂停状态下可能仍需要继续其操作。 例如,处于暂停模式但可见的视频播放应用应继续显示视频。 因此,我们建议播放视频的 Activity 不要暂停其 onPause() 处理程序中的视频。 应暂停 onStop() 中的视频,并恢复 onStart() 中的视频播放。
如处理运行时变更中所述,用户使用多窗口模式显示应用时,系统将通知 Activity 发生配置变更。 这也会发生在当用户调整应用大小,或将应用恢复到全屏模式时。 该变更与系统通知应用设备从纵向模式切换到横向模式时的 Activity 生命周期影响基本相同,但设备不仅仅是交换尺寸,而是会变更尺寸。 如处理运行时变更中所述,您的 Activity 可以自行处理配置变更,或允许系统销毁 Activity,并以新的尺寸重新创建该 Activity。
如果用户调整窗口大小,并在任意维度放大窗口尺寸,系统将调整 Activity 以匹配用户操作,同时根据需要发布运行时变更。 如果应用在新公开区域的绘制滞后,系统将使用 windowBackground 属性或默认 windowBackgroundFallback 样式属性指定的颜色暂时填充该区域

如何设置你的app进入分屏模式:
如果你是用Android N以及以上的SDK构建的应用,你可以对应用的 Activity 是否支持多窗口显示以及显示方式进行配置。在配置清单中的、节点中设置android:resizeableActivity=[“true”|”false”]该属性,如果为true,Activity 将能以分屏和自由形状模式启动;如果设为false,Activity将不支持多窗口模式。且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。如果未指定该属性,默认为true。
如果你使用的是低于Android N版本的SDK,且app中没有设置android:screenOrientation这个属性,系统将强制调整应用的大小,会提醒用户可能会出现异常;但如果是定向应用,系统则不会调整应用的大小,会直接全屏显示。

布局属性
在Android N中,我们可以向manifest文件中添加layout节点,并设置一些新增加的属性,通过这些属性来设置分屏模式的一些行为,如最小尺寸等。

  1. android:defaultWidth
  2. android:defaultHeight
  3. android:gravity
  4. android:minimalSize

我们可以给一个Activity增加一个layout子节点:

<activity android:name=".MainActivity"android:resizeableActivity="true"><layout android:defaultHeight="300dp"android:defaultWidth="600dp"android:gravity="end|top"android:minHeight="800dp"android:minWidth="300dp" /><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

分屏模式下被禁用的功能:

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

分屏模式变更通知和查询:
Activity.isInMultiWindowMode():调用该方法以确认 Activity 是否处于多窗口模式。
Activity.onMultiWindowModeChanged():Activity 进入或退出多窗口模式时系统将调用此方法。 在 Activity 进入多窗口模式时,系统向该方法传递 true 值,在退出多窗口模式时,则传递 false 值。

分屏模式还能支持两个APP之间拖拽,具体请看官网的。

关于App分屏模式的学习就到这里了,欢迎大家一起交流


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

相关文章

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

git命令详解

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

关于Git这一篇就够了

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

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

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

一阶电路的零状态响应

零状态响应就是电路在零初始状态下(动态元件初始储能为零)由外施激励引起的响应。 RC电路的零状态响应 在t0时刻&#xff0c;开关S闭合&#xff0c;电路接入直流电压源US。根据KVL&#xff0c;有 uRuCUS (KVL ∑u0 指定回路的绕行方向是顺时针的&#xff0c;R、C的电压参考方向…

MATLAB:零状态响应(lsim(连续);filter(离散))、冲激响应(impulse或impz)和阶跃响应(step)、卷积(conv)

例1&#xff1a;求系统y(t)2y(t)100y(t)10x(t)的零状态响应&#xff0c;已知x(t)sin(2pt)u(t)。【连续时间系统零状态响应】 例2&#xff1a;求系统y(t)2y(t)100y(t)10x(t)的零状态响应&#xff0c;已知x(t)d(t)。&#xff08;ts0;te5;dt0.01&#xff09;【连续时间系统冲激响应…

连续系统的时域分析(一)LTI连续系统微分方程解法3——零状态响应的求解方法

(一)零状态响应的定义 零状态响应是系统在初始状态为零时&#xff0c;仅有输入信号 f ( t ) f(t) f(t)引起的响应。用 y z s ( t ) y_{zs}(t) yzs​(t)表示 &#xff08;二&#xff09;解题步骤 &#xff08;1&#xff09;当微分方程右端不含冲击函数 δ ( t ) \delta(t) δ…

《信号与系统》连续时间系统零状态响应的 MATLAB 实现

3.5.1 连续时间系统零状态响应的 MATLAB 实现 参考书籍 《信号与系统》 Matlab 库函数中的 **lsim()**能对微分方程描述的 LTI 连续时间系统的响应进行仿真。 lsim(b,a,x,t) 该调用格式中&#xff0c;a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量&#xff…