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;
}
@Override
public void onClick(View view) {
mTaskView.initiateSplitSelect(mSplitPositionOption);
}
}
这里我们主要关注mTaskView.initiateSplitSelect(mSplitPositionOption);
,也就是对我们上分屏的初始化。
选择上分屏
确定分屏上部分,做好相关显示动画,等待选择下分屏
选择下分屏
确定选择下分屏,播放相关动画,调用SytemUI接口进入到真正分屏