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分屏多窗口的实践代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-08-03 01:31:41

Android分屏多窗口的实践代码的相关文章

双屏异显-现在要做一个android分屏异显,没有思路,求指点

问题描述 现在要做一个android分屏异显,没有思路,求指点 就是实现两个屏幕同时显示两个activity,上面的大屏幕播放广告,下面的屏幕可以进行操作,而且两者独立,当有人操作下面的屏幕时,上面的广告仍会继续播放.我是听说Android4.4中google官方支持了分屏,我也看了下google官方最新的那个API20,但是无奈我是新手,从没看过API这么大的东西,以前最多也只是知道查查某个类的某个函数,不知道怎么找那个分屏异显的,求知道,急求 解决方案 下载最新的ADT,创建项目时,可以选择

2291游戏浏览器怎么游戏分屏

  第一步:在网页选项卡中点击右键或者点击其他工具点击"开启分屏". 第二步:选择要加入分屏的窗口,点击启动开启分屏模式 第三步:分屏模式开启后可以在分屏上使用点击操作,或者右键->放大窗口进行具体操作. 第四步:在分屏开启后可以使用右键菜单中的启动主屏进入到主屏模式.或者进行脱离分屏.关闭分屏等操作. 第五步:主屏模式 第六步:未加入分屏的选项卡可以在选项卡上点击右键菜单加入到当前分屏中.

Android系统的三种分屏显示模式

      Google在Android 7.0中引入了一个新特性--多窗口支持,允许用户一次在屏幕上打开两个应用.在手持设备上,两个应用可以在"分屏"模式中左右并排或上下并排显示.在电视设备上,应用可以使用"画中画"模式,在用户与另一个应用交互的同时继续播放视频.这种"分屏"模式在Android方案的车机上会比较有用,可以支持导航和其他功能同时显示,如下图所示.这是Android的第一种分屏显示.                VR系统中的分屏

Android N 将提供分屏功能和新设计的通知控制

Android N的开发者预览版貌似将提供原生分屏功能和全新设计的系统通知控制.科技网站ArsTechnica最先对该消息进行了报道,但相关内容又很快被撤下.新的通知控制系统将跨越整个屏幕的宽度,同时上面会提供编辑按键以方便快速设置.相应的改进将主要是为了配合新系统的Doze特性,后者能帮助设备进一步节 省电池能耗. 此外,Android N也针对多任务增加了新的分屏模式.该模式可以同时在智能手机和平板电脑设备上使用.与早先开发者预览版一样,所有的新功能都会让开发者测试过后才会向公众公开测试,预

eclipse开发-使用Eclipse开发的时候不知按错哪个键了出现编辑框分屏显示同一个代码...

问题描述 使用Eclipse开发的时候不知按错哪个键了出现编辑框分屏显示同一个代码... 解决方案 研究了很久,只找到多个文件分栏显示的方法,同一个文件还真是没有找到. 比较两个文件的功能和你的情况也不一样. 多文件分栏显示方法请参考:Eclipse 分栏同时显示多个文件的内容 解决方案二: 这个问题还真没遇到过.重新启动Eclipse还存在 这个情况? 解决方案三: 解决方案四: 已经解决是新版的eclipse才有的(我版本为luna)ctrl+shift+[或ctrl+shift+] 解决方

android截屏功能实现代码_Android

android开发中通过View的getDrawingCache方法可以达到截屏的目的,只是缺少状态栏! 原始界面 截屏得到的图片 代码实现 1. 添加权限(AndroidManifest.xml文件里) 复制代码 代码如下: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 2. 添加1个Button(activity_main.xml文件) <RelativeL

Android触屏测试实例代码_Android

本文实例详细描述了Android触屏测试代码,可实现对触屏的点击.移动.离开等事件的处理,对于Android初学者有很好的借鉴价值. 具体功能代码如下: package com.test; import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import

三星S6 edge如何使用多窗口分屏?S6多窗口分屏使用教程

长按最近应用程序键即可打开多窗口分屏功能,具体使用方法,请按以下步骤操作:  1.长按[最近应用程序]键.    2.阅读屏幕文字说明后,选择一个需要以多窗口分屏视图打开的应用程序,这里以点击[S 日历]为例.    3.S 日历已在屏幕上半部分显示,选择另一个应用程序,这里以点击[信息]为例.    4.信息已在屏幕下半部分显示,点击两个程序中间的[圆点]图标.    5.显示的功能从左到右依次为切换窗口.拖放内容.最小化窗口.最大化窗口.关闭应用程序.点击[切换窗口]图标.    6.信息和

三星S7 SM-G9300(6.0.1)如何使用多窗口/分屏视图功能?

长按最近键即可打开多窗口/分屏视图功能,具体使用方法,请按以下步骤操作:  1.长按[最近]键.    2.选择一个需要以多窗口分屏视图打开的应用程序,这里以点击[S 日历]为例.    3.S 日历已在屏幕上半部分显示,选择另一个应用程序,这里以点击[信息]为例.    4.信息已在屏幕下半部分显示,点击两个程序中间的[圆点]图标.    5.显示的功能从左到右依次为切换窗口.拖放内容.最小化窗口.最大化窗口.关闭应用程序.点击[切换窗口]图标.    6.信息和S 日历窗口位置已切换,点击[