Android10 Launcher3的一些总结

由于最近解决Launcher3所有应用界面,一个区域图标闪烁的问题,故将Launcher3这部分代码梳理了一编,做个总结归纳一下。

       Launcher3的主入口是Launcher.java这个Activity文件,并且他的布局文件的入口在luancher.xml,从这个入口开始延申很多东西出来,如果深入研究,你会发现这套代码非常庞大,

并且运用了很多设计模式在里面,并且后续为了完善又出了quickstep这种版本。

    本次需要研究的范围主要为AllApps这个模块,这也是我们上拉之后会出现的所有应用界面。并且我们把范围继续缩小到每个图标。

在分析之前我们需要搞清楚几个概念,就是workspace,allapps,draglayer,hotset,apps_view,overview这几个部分。当我们打开launcher.xml后会发现这些相关的部分,如果不搞清每个部分负责哪些功能,分析代码

时会难度很大,不能缩小到我们想要的部分。首先我们可以看到launcher.xml是由一个自定义控件LauncherRootView来实现的,并且他的控件(不包括孙子空间)只有一个,那就是DragLayer,从字面我们可以

猜测到这是一个拖拽的视图。这也就是我们的laucher可以上下左右拖拽的功能实现。

下面我们看看DragLayer的子控件。

workspace,这个就是我们开机启动和点击home键所回到的主界面。

hotset,这个就是我们workspace下的底座显示的图标,用于一些常用应用的放置,windows同样有这个功能,位于导航栏之上。

overview_panel,这个是我们长按桌面空白区域会进入到的界面。

apps_view,这个就是我们所有应用的界面allapps。

那么接下来我们就主要寻找这个apps_view,它的定义位于all_apps.xml。这里面又包含了一个all_apps_rv_layout,这就是我们所有应用被列表起来的界面,它在我们的all_apps_rv_layout.xml。这个布局文件里面没有子控件。

这是一个自定义控件AllAppsRecyclerView,它继承于BaseRecylerView,并且BaseRecylerView又继承于RecylerView,

RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。

关于这个视图的使用方法参考链接https://www.jianshu.com/p/b4bb52cdbeb7。通过对RecyclerView的学习可以发现需要对这个视图进行一些配置。

那么就需要看一下调用AllAppsRecyclerView的视图all_app.xml。这个视图也是一个自定义视图AllAppsContainerView,我们去看到在内部类AdapterHolder里的setup函数中调用了AllAppsRecyclerView,并对其进行设置。

 

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值