当前位置: 首页 > article >正文

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


http://www.kler.cn/a/290601.html

相关文章:

  • 15 个改变世界的开源项目:塑造现代技术的先锋力量
  • git初始化和更新项目中的子模块
  • 【ubuntu】单进程申请4GB内存
  • [极客大挑战 2019]PHP 1
  • 一篇Spring Boot 笔记
  • wordpress实用功能A5资源网同款 隐藏下载框 支付框 需要登录才能查看隐藏的内容
  • 自定义全局变量在uniapp的Vuex应用
  • 人工智能与机器学习原理精解【17】
  • 【JUnit单元测试框架】
  • vite 打包 学习
  • 能实现可算不可见的同态加密技术详解
  • PDF招生简章如何转二维码?
  • PostgreSQL分区表原理、案例的灵活应用
  • EventBus-Vue事件总线解析与使用指南
  • C++学习笔记(6)
  • C++11中的static_assert运算
  • 初学者指南:Spring Boot入门
  • 无人机的核心技术!!!
  • 打通Vue3+Flask(python3)+Mysql-实现简单数据交互
  • 会议音频方案
  • 2024.9.2
  • Orcad封装怎么添加
  • (每日一问)基础知识:Java垃圾回收机制详解
  • ES6基础----Promise的使用
  • UPDATE ... JOIN语法
  • 算法复盘——Leetcode hot100:链表160