Android分屏多窗口的实践代码
作者:zhang555 时间:2021-06-21 21:34:58
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
标签:android,多窗口,分屏
0
投稿
猜你喜欢
Opencv实现读取摄像头和视频数据
2023-07-16 15:19:58
javaweb购物车案列学习开发
2021-10-28 13:30:26
通过实例解析java过滤器和拦截器的区别
2022-12-21 05:02:45
C# 泛型集合的自定义类型排序的实现
2022-11-18 20:35:32
Android实现录音方法(仿微信语音、麦克风录音、发送语音、解决5.0以上BUG)
2023-02-27 09:48:51
Android ViewPager2 使用及自定义指示器视图实现
2022-06-16 09:35:26
c# winform多线程的小例子
2023-01-05 07:11:44
Dubbo Consumer引用服务示例代码详解
2022-04-26 03:56:44
springboot编程式事务TransactionTemplate的使用说明
2022-03-01 15:19:37
C# Partial:分部方法和分部类代码实例
2022-04-07 11:28:26
详解Spring中的@PropertySource注解使用
2023-05-05 06:40:15
Java多线程编程综合案例详解
2023-12-09 18:13:25
Android中new Notification创建实例的最佳方法
2022-03-19 15:52:25
Java中的这些骚操作你不能不知道!!!
2022-07-08 12:28:14
详解SpringBoot通用配置文件(不定时更新)
2022-12-01 09:07:04
sqlite数据库的介绍与java操作sqlite的实例讲解
2023-05-09 03:07:40
如何使用IDEA的groovy脚本文件生成带JPA注解的实体类(图文详解)
2022-02-04 02:42:04
Android中TelephonyManager类的用法案例详解
2022-04-30 20:18:32
浅谈Android中使用异步线程更新UI视图的几种方法
2022-10-17 02:57:38
Java用BigDecimal类解决Double类型精度丢失的问题
2022-01-07 16:49:24