android分屏资源适配,Android N 分屏适配

article/2025/9/15 15:50:50

支持和禁止分屏功能

android:resizeableActivity="true|false" 通过AndroidManifest中进行配置,来支持或者禁止分屏功能

监听是否进入分屏模式

重写Activity或者FragmentActivity的onMultiWindowModeChanged方法

@Override

public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {

super.onMultiWindowModeChanged(isInMultiWindowMode);

Log.e("gex", "onMultiWindowModeChanged()");

}

生命周期

如果不做任何处理, Activity会销毁重新创建,生命周期如下:

05-25 13:42:50.964 23603-23603/com.gx.lottie E/gex: onMultiWindowModeChanged()

05-25 13:42:51.002 23603-23603/com.gx.lottie E/gex: onDestroy()

05-25 13:42:51.131 23603-23603/com.gx.lottie E/gex: onCreate()

05-25 13:42:51.133 23603-23603/com.gx.lottie E/gex: onStart()

05-25 13:42:51.141 23603-23603/com.gx.lottie E/gex: onResume()

05-25 13:42:51.156 23603-23603/com.gx.lottie E/gex: onPause()

如果想禁止Activity销毁重建,则需要对Activity的configChanges进行如下的配置:

android:configChanges="screenLayout|screenSize|smallestScreenSize|orientation"

配置过之后,进入分屏模式后生命周期的变化如下:

05-25 13:46:55.201 23806-23806/com.gx.lottie E/gex: onMultiWindowModeChanged()

05-25 13:46:55.263 23806-23806/com.gx.lottie E/gex: onRestart()

05-25 13:46:55.264 23806-23806/com.gx.lottie E/gex: onStart()

05-25 13:46:55.284 23806-23806/com.gx.lottie E/gex: onResume()

05-25 13:46:55.349 23806-23806/com.gx.lottie E/gex: onPause()

特殊情况处理,比如视频播放

进入分屏模式后,两个窗口只有一个会处于onResume的状态,所以如果有视频播放的需求,建议在onStart和onPause方法里边做相关的播放和暂停处理

Activity跳转

如果分屏之后,想跳转进入的目标Activity展示在另一半的屏幕中,则需要设置以下Flag:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);

效果如下:

3e669c144d65

11111.png

3e669c144d65

222222.png


http://chatgpt.dhexx.cn/article/1yqqgFvD.shtml

相关文章

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

事实上KitKat已经可以实现多窗口分屏,只是功能不全,Google并没有把这个功能提供给用户。 使用am stack boxes可以查看当前系统存在的Activity Stack: 1 am stack boxes output: Box id1 weight0.0 verticalfalse bounds[0,38][800,1208] Sta…

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

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

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

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

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

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

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管理的问题就束手无策,或者用一些不优雅的方式…