Android N 中推出了多窗口支持,项目要求适配多窗口模式,记录一下。

1.生命周期:对于完全没有适配多窗口的APP来说,当启用多窗口模式或者拖动窗口时,会出现Activity销毁重新加载的现象。 解决方法:在manifest文件里面给activity加上下面一行属性

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

2.当启用多窗口模式时,可能有改变原UI的需求,这时可以在代码里面修改:

@Override

public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {

super.onMultiWindowModeChanged(isInMultiWindowMode);

//在此处根据isInMultiWindowMode来适配多窗口UI

}

onMultiWindowModeChanged在Activity,fragment里面都有,会在多窗口模式变化的时候调用该方法。不过注意了,当已经是多窗口模式时,进入新页面,并不会调用该方法。那怎么办呢?可以用下面这个方法来判断当前是否是多窗口状态,最低兼容SDK版本是24:

Activity().isInMultiWindowMode()

可以用Activity的这个方法判断。当是多窗口时隐藏或者显示某些布局。

3.如果要在拖动多窗口的过程中,动态改变布局,可以在manifest文件里面对相应的activity配置,例如:

android:name="com.android.multiwindowplayground.activities.MinimumSizeActivity"

android:launchMode="singleInstance"

android:taskAffinity="">

android:defaultHeight="500dp"

android:defaultWidth="750dp"

android:gravity="top|end"

android:minWidth="500dp"

android:minHeight="500dp" />

然后在activity的布局文件里面,设置线性布局的layout_gravity和权重:

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/white"

android:orientation="vertical">

android:id="@+id/scrollview"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_gravity="top"

android:layout_weight="0.75">

android:id="@+id/description"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:textColor="@color/white" />

layout="@layout/logging"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_gravity="bottom"

android:layout_weight="0.25" />

就会在拖动的过程中自动改变。这是Android官方的一个demo。

4.在拖动多窗口的过程中,也可以在代码里面动态设置,会调用onConfigurationChanged方法,在Configuration newConfig参数中有很多信息,就有当前应用的宽高信息。

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

int screenWidthDp=newConfig.screenWidthDp;

int screenHeightDp=newConfig.screenHeightDp;

//根据宽高动态改变布局

}

最后推荐:Android官方文档

以上所述是小编给大家介绍的Android分屏多窗口的实践代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

android n进入分屏代码分析_Android分屏多窗口的实践代码相关推荐

  1. android n进入分屏代码分析_Android N的五项全新功能(加上分屏)

    今早谷歌最新移动操作系统Android N正式亮相,针对智能手机.平板和Android TV带来了一系列新的功能.外媒SlashGear今天通过开发者的点滴来梳理寻找该预览版本中最值得关注的新特性和功 ...

  2. 【Android4.4蓝牙代码分析】- 蓝牙Enable过程

    [Android4.4蓝牙代码分析]- 蓝牙Enable过程 (一)基本说明 本文的代码选用的是Android4.4的kitkat代码. 本文是在Windows环境下通过source insight进 ...

  3. Android4.0图库Gallery2代码分析(二) 数据管理和数据加载

    Android4.0图库Gallery2代码分析(二) 数据管理和数据加载 2012-09-07 11:19 8152人阅读 评论(12) 收藏 举报 代码分析android相册优化工作 Androi ...

  4. Vision Transformer(VIT)代码分析——保姆级教程

    目录 前言 一.代码分析 1.1.DropPath模块 1.2.Patch Embeding 1.3.Multi-Head Attention 1.4.MLP 1.5.Block 1.6.Vision ...

  5. 开源公告|腾讯云代码分析(TCA)对外开源

    腾讯云代码分析是集众多分析工具的云原生.分布式.高性能的代码综合分析跟踪系统.其主要功能是通过词法分析.语法分析.控制流.数据流分析等技术发现并跟踪管理敏捷迭代下的代码相关问题,并从圈复杂度.重复代码 ...

  6. 用自定义代码分析来标准开发人员的开发规范

      代码分析(关于代码分析详见http://msdn.microsoft.com/zh-cn/library/3z0aeatx(VS.80).aspx),是visual studio开发工具中提供的一 ...

  7. [转]代码分析工具FxCop1.36之一:介绍与使用

    FxCop是一个代码分析工具,一种项目级别的代码分析工具:而微软内部代码检查工具 StyleCop属于代码级别.具体的区别可以在网上搜索到.这里主要说明一下FxCop的使用. FxCop使用可以分为 ...

  8. 一个简单的时间片轮转多道程序内核代码分析

    郑斌 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第二周的实验内容分析 1. ...

  9. 2021.C/C++静态代码分析工具

    静态代码分析工具 1 cppcheck 静态代码分析工具 1 cppcheck 静态代码分析工具 参考博客 使用cppcheck检测代码警告.错误 ubuntu下安装cppcheck sudo apt ...

最新文章

  1. 手把手 | Python代码和贝叶斯理论告诉你,谁是最好的棒球选手
  2. 安装ArchLinux BIOS
  3. 【算法的时间复杂度和空间复杂度】-算法02
  4. 虚拟机VMware12下安装windows7 x64系统使用教程
  5. Kafka Design
  6. java 取栈顶元素_《Java实战之内存模型》详解篇
  7. php restful规范,RESTFul API规范 详细指南
  8. java获取系统当前时间格式化_java 获取系统当前时间并格式化
  9. 【OJ】洛谷暴力枚举题单题解锦集
  10. Java到底是不是值传递
  11. 【clickhouse】clickhouse : Suspiciously many broken parts to remove.: Cannot attach table default
  12. Alameda:最初同意对Reef投资8000万美元,但支付2000万美元后Reef拒绝了随后的交易
  13. 【krpano】KRPano测试开发专用浏览器
  14. 数字影像系统 接收服务器,影像存储与传输系统(PACS)
  15. Verilog中的Latch
  16. JavaScript之排他思想详述
  17. 42张动图带你走进神奇的物理世界,超震撼!
  18. 基于SSH+MySQL+Bootstrap的高校实验室预约管理系统
  19. 【剑指Offer】个人学习笔记_41_数据流中的中位数
  20. 雷电模拟器adb devices返回127.0.0.1:5555 offline分析和解决办法

热门文章

  1. 历年诺贝尔生理学或医学奖
  2. 多视几何009:对极几何
  3. java校内报纸实验报告_第六周Java实验报告四
  4. 新显卡出世,谈谈与深度学习有关的显卡架构和相关技术
  5. 在电脑上怎么做报表新手_自己怎样在电脑上制作表格
  6. 4G+5G多卡聚合路由设备解决户外直播网络需求
  7. 中国天眼进入“多出成果”“出好成果”新阶段
  8. 我们的时空之旅(一)——丽江古城
  9. python中按钮位置设定_tkinter Python中的按钮位置(网格)
  10. AttributeError: module ‘tensorflow_core._api.v2.config‘ has no attribute ‘run_functions_eagerly‘