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分屏多窗口实践相关推荐

  1. 解决电脑扩展屏后图标老是显示在副屏问题

    现象:解决电脑扩展屏后图标老是显示在副屏问题 思路:网上找了一些,花了2小时,分析各种原因.总结如下 这个是罪魁祸首,这个是左面图标强制恢复软件 如果你在扩展屏幕期间恢复的话,恢复在副屏后,就会一直显 ...

  2. android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...

    在上一篇博客,Android-Activity临时数据的保存,中讲解到,当发生横竖屏切换的时候,系统会杀死Activity并重新启动Activity 系统会杀死Activity 12-12 08:11 ...

  3. 在Android中处理屏幕布局变化

    说明 以编程方式处理屏幕布局,锁定屏幕布局.控制活动生命周期,本文简明讲述以编程方式管理屏幕布局,每个小节都聚焦于这个主题的不同方面. 手动处理布局变化 首个显要的讨论点是如何手动处理布局变化. 一个 ...

  4. Android手机投屏后没有声音,乐播投屏电视没有声音怎么办_乐播投屏电视没有声音手机有声音解决办法_3DM手游...

    乐播投屏是一个非常不错的投屏软件,操作使用简单,最近不少小伙伴都在用.但是在使用乐播投屏的时候,有很多小伙伴出现了电视没有声音手机有声音的情况,这是怎么回事呢?我们一起来看看乐播投屏电视没有声音的解决 ...

  5. android软键盘把布局顶上去,Android 软键盘弹出时把原来布局顶上去的解决方法

    键盘弹出时,会将布局底部的导航条顶上去. 解决办法: 在mainfest.xml中,在和导航栏相关的activity中加: android:name=".filing.MainActivit ...

  6. (已解决)win10+ubuntu18.04双系统,ubuntu锁屏后无法唤醒,重启黑屏闪烁无法进入命令行模式

    事发经过: 台式机双系统 win10 + Ubuntu16.04,大部分时间在Ubuntu16.04下工作.一个不小心(dist-upgrade)升级到了ubuntu18.04后,在一次锁屏后发现再也 ...

  7. mysql分表后怎么索引_分库分表后的索引问题

    摘要 最近遇到一个慢sql,在排查过程中发现和分库分表后的索引设置有关系,总结了下问题. 问题 在进行应用健康度盘点时,发现有个慢sql 如下 select brandgoodid from bran ...

  8. kali锁屏后无法唤醒_联想电脑锁屏后无法唤醒_win10联想休眠怎么唤醒黑屏图文步骤...

    2020-02-15 12:59:37 大家在使用电脑时为了保护电脑的安全,我们一般会设置密码.那么之后我们开机或者唤醒睡眠的时候,往往会先弹出一个锁屏界面.但有的网友却觉得这样很是麻烦,想要关闭锁屏 ...

  9. 同步手绘板——android端下笔后颜色变化

    实现效果 : 在设计之初我们以为是改变笔线条的粗细来实现类似效果,后来通过找其他相关软件比对发现是不改变线条的粗细,通过改变透明度实现下笔后颜色的渐变,虽然已实现,但渐变效果很一般,不流畅,算法还待优 ...

最新文章

  1. 高效职场人不得不懂的“脑”知识
  2. MVP 2008全球峰会可预订宾馆,寻室友
  3. .net 实现 URL重写,伪静态 1
  4. C++|Qt笔记-关于extern和namespace的区别与联系
  5. 带你上手全新版本的Webpack 5
  6. fetchtype 动态控制_hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法
  7. uc3842开关电源电路图_详解6款简单的开关电源电路设计原理图
  8. 传统企业连接互联网的五种方式
  9. 解决github下载及访问不稳定问题
  10. Zotero批量下载知网文献
  11. matlab画进化树分析图,教你用ggtree绘制高颜值进化树
  12. java mail 匿名_java开发邮件发送匿名
  13. 什么是无线信号的灵敏度和保真度
  14. signature=2a6f113e0dca986b5f4efd92dac9c1cb,android so 文件存私密数据,且防止 so文件未知应用盗用...
  15. 单面打印机打印双面小册子
  16. opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式
  17. 用js创建audio对象实现网页迷你音乐播放器
  18. 安卓Android手机直播推送同步录像功能设计与实现源码
  19. C语言课程设计——宾馆管理系统
  20. python处理通达信数据,加入BOLL通道数据,量化交易

热门文章

  1. Markdown实用快捷键
  2. 看到自己的体检报告,小灰瑟瑟发抖
  3. 四川阆中2021中学高考成绩查询入口,2021年四川高考体检报告结果查询时间及查询网址入口...
  4. Chrome浏览器对统一资源发出多个请求时,导致最多停止20s问题
  5. 计算机机房消房安全管理制度,计算机机房消防安全管理制度
  6. warning: ISO C forbids an empty translation unit [-pedantic]
  7. 麦田守望者--走出软件作坊:三五个人十来条枪 如何成为开发正规军(四十三)...
  8. 后缀是lnk是什么文件_ink是什么文件
  9. [技巧]QQ密技(一)
  10. 【第三方互联】11、创建支付宝(Alipay)互联应用