概述
这个章节为Android11分屏,后续还有Android12分屏讲解
Android有很多窗口模式来展示内容,例如分屏和画中画,本章节主要围绕分屏功能展开详细描述,分屏主要可为用户提供两个活动窗格供他们放置应用
普通应用适配分屏
resizeableActivity:
如果想让自己的活动窗格可以进入分屏则需要在activity标签内配置android:resizeableActivity=“true”,如果不想进入分屏只想保持全屏模式则设置false
resizeableActivity具体描述可参考此处
最小宽度(Smallest-width)限定符
在分屏功能中是允许界面大小改变,故此一般会有固定几个大小,例如1/3,2/3和全屏,这里需要资源相应的适配,稍微抛砖引玉一下场景如果大小差异太大可以利用最小宽度限定符来区分各种大小的布局资源;当然还有其他适配方式都可以尝试,具体可以参考此处
onTopResumedActivityChanged:
public void onTopResumedActivityChanged(boolean isTopResumedActivity)
当活动在系统中恢复到或失去顶部位置时调用。
从Android Q可以在多窗口和多显示模式下同时恢复多个活动。可使用此回调代替onResume(),以指示活动可以尝试打开独占访问设备,如相机。
isTopResumedActivity–如果它是系统中恢复的最顶部的活动,则为true,否则为false
系统应用适配分屏
启动分屏
下面是常量针对分屏的两个位置,一个是primary,一个是sercondary
public class WindowConfiguration {
public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3;
public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4;
}
ActivityOptions ops = ActivityOptions.makeBasic();
ops.setLaunchWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
ActivityTaskManager.getService().startActivityFromRecents(taskId, ops);
ActivityTaskManager的startActivityFromRecents是用于启动分屏的接口,taskId则是需要进入分屏的task活动栈的id,setLaunchWindowingMode用于设置分屏是以primary启动还是sercondary启动。
判断应用是否支持分屏
ActivityInfo 的isResizeableMode可以ActivityInfo判断是否是可变大小模式
public class ActivityInfo extends ComponentInfo implements Parcelable {
/** @hide */
@UnsupportedAppUsage
public static boolean isResizeableMode(int mode) {
return mode == RESIZE_MODE_RESIZEABLE
|| mode == RESIZE_MODE_FORCE_RESIZEABLE
|| mode == RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY
|| mode == RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY
|| mode == RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION
|| mode == RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
}
}
使用场景可以在应用菜单界面或则其他应用选项中区分归类哪些应用可以支持分屏。
分屏模块配置
ActivityTaskManager.supportsSplitScreenMultiWindow(this)用于判断是否支持分屏开启
/**
* Returns true if the system supports at least one form of multi-window.
* E.g. freeform, split-screen, picture-in-picture.
*/
public static boolean supportsMultiWindow(Context context)

最低0.47元/天 解锁文章
6633

被折叠的 条评论
为什么被折叠?



