Android U 多任务启动分屏——Launcher流程(更新中)
前言
前面我们对分屏的整体进行了介绍:分屏整体流程介绍
现在我们对桌面部分的流程进行分析
分屏onClick事件的监听
代码路径:packages/apps/Launcher3/quickstep/src/com/android/quickstep/views/TaskMenuView.java
private void addMenuOption(SystemShortcut menuOption) {//获取菜单LinearLayout menuOptionView = (LinearLayout) mActivity.getLayoutInflater().inflate(R.layout.task_view_menu_option, this, false);//设置名字和图片menuOption.setIconAndLabelFor(menuOptionView.findViewById(R.id.icon), menuOptionView.findViewById(R.id.text));LayoutParams lp = (LayoutParams) menuOptionView.getLayoutParams();mTaskView.getPagedOrientationHandler().setLayoutParamsForTaskMenuOptionItem(lp,menuOptionView, mActivity.getDeviceProfile());// Set an onClick listener on each menu option. The onClick method is responsible for// ending LiveTile mode on the thumbnail if needed.//设置onClick监听menuOptionView.setOnClickListener(menuOption::onClick);//添加菜单到布局mOptionLayout.addView(menuOptionView);}
这个方法主要就是对多任务中应用的各个菜单选项进行添加并监听onClick,如下图所示:
我们点击的就是menuOption
,它是SystemShortcut
对象,在分屏中SplitSelectSystemShortcut
继承SystemShortcut
,所以真正的onClick方法实现在SplitSelectSystemShortcut
中
代码路径:packages/apps/Launcher3/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
class SplitSelectSystemShortcut extends SystemShortcut {private final TaskView mTaskView;private final SplitPositionOption mSplitPositionOption;public SplitSelectSystemShortcut(BaseDraggingActivity target, TaskView taskView,SplitPositionOption option) {super(option.iconResId, option.textResId, target, taskView.getItemInfo(), taskView);mTaskView = taskView;mSplitPositionOption = option;}@Overridepublic void onClick(View view) {mTaskView.initiateSplitSelect(mSplitPositionOption);}}
这里我们主要关注mTaskView.initiateSplitSelect(mSplitPositionOption);
,也就是对我们上分屏的初始化。
选择上分屏
确定分屏上部分,做好相关显示动画,等待选择下分屏
选择下分屏
确定选择下分屏,播放相关动画,调用SytemUI接口进入到真正分屏