安卓10.0 分屏相关

安卓10.0 分屏

packages/apps/Launcher3/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java

208 private void addMenuOption(TaskSystemShortcut menuOption, OnClickListener onClickListener) {

209 ViewGroup menuOptionView = (ViewGroup) mActivity.getLayoutInflater().inflate(

210 R.layout.task_view_menu_option, this, false);

211 menuOption.setIconAndLabelFor(

212 menuOptionView.findViewById(R.id.icon), menuOptionView.findViewById(R.id.text));

213 menuOptionView.setOnClickListener(onClickListener);

214 mOptionLayout.addView(menuOptionView);

215 }

packages/apps/Launcher3/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskSystemShortcut.java

public static class SplitScreen extends MultiWindow

sysUiProxy.onSplitScreenInvoked()

frameworks/base/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java

private boolean onLongPressNavigationButtons(View v, @IdRes int btnId1, @IdRes int btnId2)

onLongPressRecents()

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

public void toggleSplitScreen()

protected boolean toggleSplitScreenMode(int metricsDockAction, int metricsUndockAction)

分屏流程:

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java

//长按任务栏进行分屏

onLongPressRecents()

mStatusBarLazy.get().toggleSplitScreenMode(MetricsEvent.ACTION_WINDOW_DOCK_LONGPRESS,MetricsEvent.ACTION_WINDOW_UNDOCK_LONGPRESS);

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

toggleSplitScreenMode(int metricsDockAction, int metricsUndockAction)

mRecentsOptional.get().splitPrimaryTask(createMode, null, metricsDockAction);

frameworks/base/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java

public boolean splitPrimaryTask(int stackCreateMode, Rect initialBounds, int metricsDockAction)

//支持分屏多窗口

if (runningTask.supportsSplitScreenMultiWindow) {

if (ActivityManagerWrapper.getInstance().setTaskWindowingModeSplitScreenPrimary(

runningTask.id, stackCreateMode, initialBounds)) {

mDividerOptional.ifPresent(Divider::onDockedTopTask);

// 全景服务正在处理拆分屏幕,因此只需跳过等待第一个绘制的通知,并通知分屏器立即开始制作动画。

mDividerOptional.ifPresent(Divider::onRecentsDrawn); return true; } } else { //不支持分屏多窗口 Toast.makeText(mContext, R.string.dock_non_resizeble_failed_to_dock_text,Toast.LENGTH_SHORT).show(); }新增setTaskWindowingModeSplitScreenPrimary函数,该函数可将任务移动至WindowingMode与ActivityType匹配SPLIT属性栈的Stack运行;

相关推荐
杉氧4 小时前
深入理解 Compose 重组机制:快照系统如何驱动 UI 精准刷新?
android·架构·android jetpack
召钱熏4 小时前
状态枚举正确≠渲染正确:一个语音按钮的状态机边界修复实录
android·前端
杉氧5 小时前
深度解析:Jetpack Compose 核心架构与底层原理 —— 十年安卓老兵的“破茧重生”
android·架构·android jetpack
通玄5 小时前
Jetpack Compose 入门系列(七):ViewModel 与界面状态管理
android
落魄Android在线炒饭5 小时前
Android Framework 开发技巧:android.jar 生成与系统快速编译验证
android
如此风景6 小时前
Kotlin Flow操作符学习
android·kotlin
plainGeekDev7 小时前
GreenDAO → Room
android·java·kotlin
weiggle7 小时前
第八篇:ViewModel + Compose——生产级状态管理实践
android
恋猫de小郭12 小时前
Amper 正式转正 Kotlin Toolchain ,Gradle 未来何去何从
android·前端·flutter
plainGeekDev13 小时前
ButterKnife → ViewBinding
android·java·kotlin