安卓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运行;

相关推荐
ihuyigui7 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端
大尚来也8 小时前
老项目 PHP 5.6 升级 PHP 8 完整迁移步骤与兼容坑汇总
android·adb
Android研究员8 小时前
Android进阶之事件分发机制深度剖析
android·前端·面试
峥嵘life9 小时前
Android WiFi连接过程 wpa_supplicant 日志分析
android·开发语言·php
Android小码家10 小时前
OWASP 移动应用安全之授权(MASTG-DEMO-0090)
android·安全·frida
Summer-Bright11 小时前
消费者 AI 变现竞争:从“一家独大“到“iOS vs Android“,谁在为 AI 买单?
android·人工智能·ios·ai·自然语言处理·agi
Xzaveir11 小时前
企业号码资产平台:逐号状态、事件日志与批次聚合
android·人工智能
峥嵘life12 小时前
Android 系统应用蓝牙分享失败分析解决
android·gitee
恋猫de小郭12 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
—Miss. Z—13 小时前
计算机二级MySQL——简单应用题(事件&视图)
android·mysql·adb