Android N新特性-多窗口模式适配
来源:互联网 发布:手机淘宝怎么评价卖家 编辑:程序博客网 时间:2024/05/24 05:03
我们都知道 Android N 带来了多窗口的新特性,这样我们的App在适配android N的时候肯定要做一些适配工作。
- 1. 多窗口模式的开关
默认情况下,我们的App都是允许多窗口的,但是,如果没有进行属性的设置,会系统会抛出一个提示这个应用可能不支持多窗口模式,其实就是android系统不知道开发者是否为该App做了适配工作
那么,如果我们的应用要支持这个模式并且不让这个消息弹出来,要怎么做呢?
很简单,只需要在Activity声明的时候加入一个属性resizeableActivity,并且设置其值为true即可:
<activity android:name=".MainActivity" android:resizeableActivity="true"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter></activity>
这个属性的设置会导致三种情况:
① 如果不声明这个属性,那么默认允许进入多窗口模式,但是会有上面图片的提示(第一次运行的时候)
② 如果声明了这个属性,并设置值为true,那么允许进入多窗口模式,并且不会提示
③ 如果声明了这个属性,并设置值为false,那么不允许进入多窗口模式,只允许全屏显示
若应用targetSDKVersion为N,则该应用下所有Activity的resizeableActivity属性均默认为true,即该应用下的所有Activity均能支持多窗口显示。
若Activity1配置resizeableActivity为true,Activity1、Activity2、Activity3均处于同一Task,则Activity2和Activity3均能在多窗口下显示(即使Activity2和Activity3没有配置resizeableActivity属性)。
若Activity2需全屏显示,则需按以下步骤配置:
1、设置resizeableActivity为false
<activityandroid:name="com.exmaple.Activity2"
android:resizeableActivity="false
2、Activity1启动Activity2时,设置FLAG_ACTIVITY_NEW_TASK,Activity2运行在单独的Task,即和Activity1不在同一Task。
Intent intent= newIntent(this,Activity2.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);
- 多窗口模式的适配
当我们允许App进入多窗口模式之后,App只能占据屏幕的一部分
可以看到,在App的上半部分是一个蓝色的图片背景,在上面显示了当前的天气状况,但是如果我们不进行适配,那么进入了多窗口模式之后,这个部分的内容就会几乎占满整个窗口,这个时候我们就需要进行一下适配,当进入多窗口模式之后更换掉这一个布局,将内容进行重新排版,以便显示更多的内容。
多窗口下对应用窗口大小缩放,会触发Configuration变化,可能的变化有screenSize、smallestScreenSize、layoutDirection、screenLayout、orientation,建议Activity的manifest配置configChanges,否则Activity将被销毁重建,可能导致卡顿和跟体验差。
我们知道,values-sw400dp,sw400dp就表明了这个value是在屏幕最短边大于等于400dp的时候生效(前提是有其他不同的value文件夹)
因此在configChanges时候,应用便会去自动寻找匹配的alues值,从而改变我们layout
在宽度变化的时候,我们的应用可能最小dp只有200dp这样,而以往我们很少适配200dp的屏幕
对于多窗口模式,宽度也是经常变化的,而在以往,我们的app宽度都是固定的,很少去适配宽度变化。
- 多窗口下Activity生命周期注意事项
Android N版本多窗口下运行的两个同时可见的Activity,只有一个处于Resumed状态,有别于华为多窗口的方案(两个可见的Activity同时处于Resumed状态)。如果是视频、社交、浏览器等类型的应用,在N版本设备多窗口下运行,建议在onStart/onStop中处理play/pause逻辑,而不要在onResume/onPause方法中处理
如何知道是否处于多窗口模式
说明:N版本API Activity类新增inMultiWindow方法,判断当前Activity是否处于多窗口模
式(split-screen,freeform,pip)如何知道是否处于PiP模式
说明:N版本API Activity类新增inPictureInPicture方法,判断当前Activity是否处于PiP模式。如何监听是否进入多窗口模式
说明:N版本API Activity类新增onMultiWindowModeChanged方法,监听Activity是否进入
多窗口模式。
注:inMultiWindow为true,则表示处于多窗口模式(split-screen,freeform,pip);否则,已退出多窗口模式。如何监听是否进入PiP模式
说明:N版本API Activity类新增onPictureInPictureChanged方法,监听Activity是否进入
PiP模式。
inPictureInPicture为true,则表示处于Pip模式;否则,已退出Pip模式。如果Activity要进入PiP模式,可通过调用 方法,使Activity自身
进入PiP模式,前提条件是该Activity的 为true。- 多窗口模式中打开新的窗口处理
要在另一个窗口中打开一个Activity,接着我们只需要给这个Intent设置一个标签,完整代码如下:
Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(geoLocation);intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
这个时候我们再运行,调用的窗口会在另一个窗口中被打开。
- 验证适配是否正常
1、 全屏下启动应用,长按Recent启动多窗口,验证应用是否能正常切换到多窗口下显示。
2、 全屏下按Recent显示最近任务列表,拖拽应用标题栏到屏幕高亮区域, 验证应用是否能正常在多窗口下显示。
3、 拖动分割线,对窗口大小缩放,验证UI是否显示正常,功能是否能正常使用。
4、 如果应用定义minimalSize,则验证窗口大小是否能缩放到低于minimalSize值。
5、 性能测试,验证窗口缩放时,UI重绘是否存在性能问题。
- Android N新特性-多窗口模式适配
- Android N新特性-多窗口模式适配
- Android N新特性--多窗口支持
- android N 新特性
- Android N新特性
- Android N 新特性
- Android N 新特性
- Android N 新特性
- Android N 多窗口模式
- android 7新特性:多窗口支持
- 5个技巧帮你适配Android N多窗口特性
- Android N 的新特性
- Android N WiFi 新特性
- Android N 多窗口模式应用开发
- android N 的新特性 android 7.0的新特性
- android 7.0 多窗口及新特性demo
- Android N(SDK7.0)新特性
- Android N 7.0的新特性
- 柱状图
- Android基础学习,使用Drawable资源之ClipDrawable资源,实现图片在特定位置展开。
- 探讨跨域请求资源的几种方式
- 获取Version 和 Build
- iOS开发-canOpenURL: failed for URL: "mqq://"
- Android N新特性-多窗口模式适配
- 关于正则表达式的使用的一些小示例
- 定时领取红包的实现解决方式
- 欢迎您在新浪博客安家
- jquery 书写tab方法
- Mongodb 权限控制以及角色使用
- Spring Cache 缓存的使用
- 编写类String的构造函数、析构函数和赋值函数
- c++primer学习笔记-----3.5数组