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
  • asp之家 软件编程 m.aspxhome.com