当前位置:首页 » APP上架 » 正文

vivo分屏适配指南

1. 适配背景

vivo分屏在原生分屏的基础上做了定制化处理,比如增加分屏方式(消息\三指\组合)、分屏小桌面列表、输入法边界定制、加密界面定制等

2. 适配指导

2.1 判断分屏的方式 

Activity判断:

isInMultiWindowMode方法,判断mIsInMultiWindowMode变量,该变量在oncreate和模式变化时赋值

onMultiWindowModeChanged方法,在模式发生变化时回调

Services判断:

Q以及之前可以通过

1. WindowManagerGlobal.getWindowManagerService().getDockedStackSide()  !=  WindowManager.DOCKED_INVALID

2. getStackInfo,判断WINDOWING_MODE_SPLIT_SCREEN_PRIMARY(分屏)的stack是否存在,存在处于分屏

R以及以后通过

1. isSplitScreenModeActivated方法判断

2. Settings.system. in_multi_window,  0非分屏,1进入分屏

2.2 配置支持分屏

应用AndroidManifest.xml中可以针对app或activity进行设置。

<application
        android:resizeableActivity="true">

        <activity
                    android:resizeableActivity="true" />
</application>

当应用targetSdkVersion >=24时,android系统默认设置android:resizeableActivity=”true”,不需要应用声明即可支持应用分屏。当应用targetSdkVersion < 24时,需要应用针对application或activity设置android:resizeableActivity=”true”。

应用设置application android:resizeableActivity=”true”时,会针对app的所有activity生效,因此如果应用只需要声明单独的activity时,可以只针对单个activity进行设置,系统侧建议针对application设置android:resizeableActivity=”true”,避免应用部分页面在分屏下的异常。

2.3 获取Activity实际显示的窗口大小和位置

使用:context.getResources().getDisplayMetrics()

不推荐使用:context.getWindowManager().getDefaultDisplay().getMetrics(outMetrics)

上述接口中,context为Activity对应的上下文句柄,每个Activity应该严格使用自己的context来进行布局,而不是使用application的context。

2.4 获取Activity的窗口布局方向

获取Activity窗口方向的的方法为:

context.getResources().getConfiguration().orientation

注:不要使用width /height的方法来判Activity为横竖屏布局,因为在多窗口状态下,支持应用的拖动,会改变宽高

获取设备的方向context.getWindowManager().getDefaultDisplay().getRotation()

2.5 Activity大小切换时不重启适配

应用在Activity窗口大小切换时不重启适配,在android:configChanges属性增加screenSize|screenLayout| orientation|smallestScreenSize,并在Activity的onConfigurationChanged回调中更新宽高刷新子布局。

应用复写onConfigurationChanged()方法,通把网址生成app过该方法的Configuration参数获得窗口高度等信息,并对界面布局做相应调整,如切换布局、调整控件位置和间距等。

2.6 状态栏位置

当处于分屏下屏,和小窗模式时,应用没有状态栏,自动生成app的软件此时不应该留出状态栏高度,需要从顶部开始布局。

可以通过configuration中windowingmode判断当前处于的模式,WINDOWING_MODE_FREEFORM和WINDOWING_MODE_SPLIT_SCREEN_SECONDARY不需要空出状态栏

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/11589/

部分内容来自网络投稿,如有侵权联系立删

未经允许不得转载:一门应用 » vivo分屏适配指南
分享到

相关推荐

联系我们

微信公众号

yimendabao

关注官方微信,了解最新资讯

客服QQ
4001658508

企业QQ,点击发起咨询