Android U 多任务启动分屏——Launcher流程(更新中)

发布于:2024-09-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

前言

前面我们对分屏的整体进行了介绍:分屏整体流程介绍
现在我们对桌面部分的流程进行分析

分屏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接口进入到真正分屏


网站公告

今日签到

点亮在社区的每一天
去签到