欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android分屏多窗口的实践代码

时间:2021-05-04 10:48:40|栏目: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实现计时与倒计时的常用方法小结

栏    目:Android代码

下一篇:Android按钮美化样式的实现代码

本文标题:Android分屏多窗口的实践代码

本文地址:http://www.codeinn.net/misctech/114337.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有