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配置,例如:
<activity android:name="com.android.multiwindowplayground.activities.MinimumSizeActivity" android:launchMode="singleInstance" android:taskAffinity=""> <layout android:defaultHeight="500dp" android:defaultWidth="750dp" android:gravity="top|end" android:minWidth="500dp" android:minHeight="500dp" /> </activity>
然后在activity的布局文件里面,设置线性布局的layout_gravity和权重:
<LinearLayout android:id="@+id/layout" 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"> <ScrollView android:id="@+id/scrollview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="top" android:layout_weight="0.75"> <TextView 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" /> </ScrollView> <include layout="@layout/logging" android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="bottom" android:layout_weight="0.25" /> </LinearLayout>
就会在拖动的过程中自动改变。这是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多窗口分屏
# 浅谈 Android 7.0 多窗口分屏模式的实现
# Android Studio升级3.6 Build窗口出现中文乱码问题解决方法
# Android开发实现模仿微信小窗口功能【Dialog对话框风格窗口】
# Android监听系统来电并弹出提示窗口
# Android开发实现popupWindow弹出窗口自定义布局与位置控制方法
# Android Popupwindow弹出窗口的简单使用方法
# Android使用Activity实现从底部弹出菜单或窗口的方法
# Android自定义弹出窗口PopupWindow使用技巧
# Android窗口小部件基础编写代码实例
# 多窗口
# 拖动
# 过程中
# 可以用
# 会在
# 小编
# 这是
# 都有
# 就有
# 在此
# 中有
# 要在
# 给大家
# 能有
# 解决方法
# 方法来
# 所述
# 给我留言
# 感谢大家
# 疑问请
相关文章:
如何在IIS7上新建站点并设置安全权限?
如何做网站制作流程,*游戏网站怎么搭建?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
如何快速生成橙子建站落地页链接?
如何彻底删除建站之星生成的Banner?
ppt制作免费网站有哪些,ppt模板免费下载网站?
广州建站公司哪家好?十大优质服务商推荐
如何通过虚拟机搭建网站?详细步骤解析
制作网站外包平台,自动化接单网站有哪些?
如何在搬瓦工VPS快速搭建网站?
上海网站制作开发公司,上海买房比较好的网站有哪些?
建站之星如何保障用户数据免受黑客入侵?
C++如何编写函数模板?(泛型编程入门)
长沙做网站要多少钱,长沙国安网络怎么样?
学校建站服务器如何选型才能满足性能需求?
如何在橙子建站上传落地页?操作指南详解
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
名字制作网站免费,所有小说网站的名字?
建站之星导航菜单设置与功能模块配置全攻略
智能起名网站制作软件有哪些,制作logo的软件?
如何通过.red域名打造高辨识度品牌网站?
如何配置IIS站点权限与局域网访问?
南宁网站建设制作定制,南宁网站建设可以定制吗?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
建站之星安装需要哪些步骤及注意事项?
网站制作网站,深圳做网站哪家比较好?
湖北网站制作公司有哪些,湖北清能集团官网?
实例解析Array和String方法
建站上传速度慢?如何优化加速网站加载效率?
如何选择高效可靠的多用户建站源码资源?
如何快速搭建虚拟主机网站?新手必看指南
想学网站制作怎么学,建立一个网站要花费多少?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
小建面朝正北,A点实际方位是否存在偏差?
开封网站制作公司,网络用语开封是什么意思?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
三星网站视频制作教程下载,三星w23网页如何全屏?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
家庭建站与云服务器建站,如何选择更优?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何快速登录WAP自助建站平台?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
焦点电影公司作品,电影焦点结局是什么?
如何通过西部数码建站助手快速创建专业网站?
如何在腾讯云免费申请建站?
如何获取开源自助建站系统免费下载链接?
深圳网站制作的公司有哪些,dido官方网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
独立制作一个网站多少钱,建立网站需要花多少钱?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
*请认真填写需求信息,我们会在24小时内与您取得联系。