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

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


http://www.mrgr.cn/news/18599.html

相关文章:

  • Linux中MFS分布式文件系统(实战教程)全网最详细
  • debian系统安装mysql
  • 5、Django Admin后台移除“删除所选”操作
  • PrimeTime low power-多电压设计流程(3)
  • STM32开发资料
  • 共创AI+ 数智新引擎—2024 大模型创新应用线下沙龙上海站圆满落幕
  • VI改造计划补充篇
  • 科研|基于SprinBoot+vue的科研管理系统(源码+数据库+文档)
  • 世平安森美 NFAL5065L4BT IPM 应用于1500W 热泵热水器压缩机驱动器的方案介绍
  • 短信群发技术指南(106短信群发必掌握)
  • 零风险!零付费!我把 AI 接入微信群,爸妈玩嗨了~附教程(上):高德 API 接入
  • 微信小程序请求数据接口封装
  • Linux驱动(三):字符设备驱动之杂项
  • 浏览器百科:网页存储篇-如何在Chrome中打开Cookie(二)
  • 【Linux】自定义子进程(第十篇)
  • TCP和UDP的区别
  • Linux 用户和组管理(详细)
  • 芯片解决方案--SL8541e-OpenHarmony适配方案
  • 笔记:《利用Python进行数据分析》之透视表和交叉表
  • 开源提示词让LLM更具创造力