时间:2021-05-20
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分屏多窗口的实践代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我们开发Android项目时,经常会打开多个项目,这时候多窗口显示就很方便了。但是很多人不知道如何切换窗口,那么,这里教大家如何多窗口切换,下面我们就来看看详细
手机QQ并不支持分屏聊天,不过可以开启多窗口聊天模式,这样切换窗口更方便。QQ支持在线聊天、视频通话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮
在Android5.1发布之后,外媒在AOSP(安卓开源项目)框架代码提交中发现了“multi-windows”引用。没错,多窗口任务!
在使用WPF开发的时候就不免会遇到需要两个窗口间进行传值操作,当然多窗口间传值的方法有很多种,本文介绍的是使用委托实现多窗口间的传值。在上代码之前呢,先简单介绍
三星GalaxyS4I9500多窗口完美全开的修改教程,通过这个三星S4多窗口全开修改教程修改系统文件之后,可以在GalaxyS4的flashbar/多窗口中使