Android分屏多窗口的实践代码
作者:zhang555 发布时间:2021-06-21 21:34:58
标签:android,多窗口,分屏
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分屏多窗口的实践代码网站的支持!
来源:https://my.oschina.net/u/2606060/blog/821428


猜你喜欢
- Java Map.values()方法获取Map集合中的所有键值对象Java 集合类中的 Map.values() 方法用来获取
- 目录前言传统AOP实现扩展Interceptor实现扩展ArgumentResolver扩展Filter扩展小结文章介绍了spring-bo
- 最近公司在新版本上有一个需要,要在首页添加一个滑动效果,具体就是仿照X宝的商品详情页,拉到页面底部时有一个粘滞效果,如下图X东的商品详情页,
- 本文实例为大家分享了Android调用系统图库获取图片的具体代码,供大家参考,具体内容如下1、开发工具与关键技术:Eclipse、Andro
- 本文实例讲述了C#移除所有事件绑定的方法。分享给大家供大家参考。具体分析如下:private delegate int DEL_TEST_E
- 本文实现springboot的多文件上传,首先创建一个springboot项目,添加spring-boot-starter-web依赖。然后
- 通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了。
- 1.相关概念Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性。建
- Android 自定义View实现抽屉效果说明这个自定义View,没有处理好多点触摸问题View跟着手指移动,没有采用传统的scrollBy
- 如果不知道,类的静态变量存储在那? 方法的局部变量存储在那? 赶快收藏Java内存区域主要可以分为共享内存,堆、方法区和线程私有内存,虚拟机
- 本文实例为大家分享了java客户端登陆服务器用户名验证的具体实现代码,供大家参考,具体内容如下客户端通过键盘录入用户名,服务端对用户名进行验
- // 举个例子:一个网站有用户系统、商家系统、网站后台3个系统//可以分3个userType, user ,shop , system//网
- 一、Java语言本身也是多线程,回顾Java创建线程方式如下:1、继承Thread类,(Thread类实现Runnable接口),来个类图加
- Spring EL表达式语言,支持在XML和注解中表达式,类是于JSP的EL表达式语言。在Spring开发中经常涉及调用各种资源的情况,包含
- 1.数据数据(Data)是外部世界信息的载体, 是能够被计算机识别,加工,存储的。在现实生活中也就是我们的产品原材料。计算机中的数据包括数值
- 环境信息名称版本号Spring Boot2.4.5Idea2021.3.2服务端实现导入依赖<dependency>  
- 本文较为详细的总结分析了Android编程下拉菜单spinner用法。分享给大家供大家参考,具体如下:Spinner控件也是一种列表类型的控
- C#.Net调用基本格式:DllImport 属性提供非托管 DLL 函数的调用信息。[DLLImport(“DLL文件
- 前言Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory,Task信息等。获取信息Act
- 一、bean实例化——构造方法(常用)bean本质上就是对象,创建bean使用构造方法完成BookD