首页 > 编程语言 >基于Android7.0的Launcher3源码分析(2)——UI显示控件的组成

基于Android7.0的Launcher3源码分析(2)——UI显示控件的组成

时间:2025-01-07 09:24:01浏览次数:4  
标签:__ 控件 应用 CellLayout Android7.0 源码 Workspace 快捷方式 图标


  开始系列文章前,先把Launcher显示相关的主要控件做个介绍。
界面1

上图就是通常所说的桌面部分,下面会做个简单介绍:

    SearchDropTagetBar:搜索条和删除条
    Workspace: 只显示系统默认加载、用户手动拖入和应用自动生成的图标
    BubbleTextView: 显示应用图标的自定义View,可显示一个图标和底下的文字标题
    PageIndicator: 页面指示器
    Hotseat:快捷启动栏

Workspace: 常用工作区

继承关系:
ViewGroup
|__ PagedView
  |__ Workspace

  该区域用于放置一些常用的应用快捷方式,小部件等。该区域在Launcher第一次加载时默认是没有内容的,做客制化时一般会通过配置default_workspace_xxx.xml 文件来预置一些应用快捷方式或小部件进行加载和显示。
  从上图的继承关系可知,Workspace是一个view容器,但是它并不直接用于放置应用图标。因为Workspace是可以分页的,它的每一页又是一个ViewGroup类——com.android.launcher3.CellLayout,应用图标就放置在该容器中。CellLayout通过 addViewToCellLayout 方法将图标view进行添加,然后Workspace再通过 addView 方法将CellLayout添加进来。
  那么页面的滑动是如何实现的呢?这里并没有使用系统用于滑动的API——android.widget.Scroller。而是自定义了一个滑动实现类——com.android.launcher3.LauncherScroller,不过还是参照Scroller来进行实现的。从注释来看,估计是为了后面的开发者更方便的注入插值器,以实现不用的滑动效果。如:淡入淡出,百叶窗等页面切换效果。
Hotseat:快捷启动栏

继承关系:
FrameLayout
|__ Hotseat

  该区域用于放置最常用的应用快捷方式。一共只能放置几个应用的快捷方式(具体几个,根据桌面每行放置图标个数的参数决定)。
  跟Workspace类似,Hotseat的子View也是CellLayout,它也是通过CellLayout的 addViewToCellLayout 方法将应用快捷方式图标加入到CellLayout中进行显示。
BubbleTextView: 显示应用图标的自定义View

继承关系:
TextView
|__ BubbleTextView

  可以看到,应用的快捷方式图标是用的自定义TextView。其通过Tag的形式,把应用信息和对应的View进行绑定。这里的Tag有多种类型,这里简单介绍一下。

    ItemInfo:所有Tag的基类。以下都继承自该类。
    ShortcutInfo:应用快捷方式信息。显示在Workspace的应用图标。
    AppInfo:应用本身信息。显示在AllApps界面的应用图标。
    FolderInfo:文件夹信息。将好几个应用放到一个文件夹中。

SearchDropTagetBar:搜索条和删除条

继承关系:
FrameLayout
|__ SearchDropTagetBar

  SearchDropTagetBar 是管理 QsbSearchBar 和 DropTargetBar 两者交替显示的。
  一般情况下,显示QsbSearchBar,即上图中的搜索条。
  当长按应用图标时,QsbSearchBar会隐藏,出现DropTargetBar。根据长按图标的类型不同,会出现三种操作条:1、移除;2、卸载;3、应用信息。

PageIndicator: 页面指示器

继承关系:
LinearLayout
|__ PageIndicator

  该页面指示器的效果是,当前页面对应的圆点较大。实现很简单,只需要一张稍大的圆点图片和一张稍小的圆点图片。然后通过 addView 方法把圆点加进去即可。
界面2

AllAppsContainerView:所有应用界面。

继承关系:
FrameLayout
|__ BaseContainerView
  |__ AllAppsContainerView

  该界面会通过PackageManager,搜索所有category中包含android.intent.category.LAUNCHER的应用。并在该界面显示其入口图标。
  该界面由两部分组成。上部分的搜索框和下部分的应用列表。搜索框的实现类是 ExtendedEditText ,其继承自 EditText 。应用列表的容器类使用的是 AllAppsRecyclerView ,其继承自 RecyclerView。用于实现多行多列排布的可滑动控件。
扩展

  目前市面上常见的Launcher,很多都是把所有应用界面去掉了。而是把所有的应用图标直接显示在Workspace中。其实实现起来也不难。主要就是修改Launcher的加载流程。在加载Workspace的数据时,就通过PackageManager把所有应用的信息加载进来,把所有应用界面去掉就可以了。后面会做详细实现。

标签:__,控件,应用,CellLayout,Android7.0,源码,Workspace,快捷方式,图标
From: https://www.cnblogs.com/zhanyaowang/p/18656778

相关文章

  • Electron开发的应用如何保护源码?
    Electron开发的应用保护源码的方法可以归纳为以下几点:代码打包:使用打包工具如ElectronBuilder或ElectronPackager,将源代码和依赖项打包成一个可执行文件。这样做可以将源代码隐藏在可执行文件中,增加直接访问源代码的难度。代码加密:利用加密工具对源代码进行加密,例如使用Ja......
  • 如何安全有效地修改网站模板源码以满足个性化需求
    修改网站模板源码以满足个性化需求是一项常见的任务,以下是详细的步骤和建议,帮助您顺利完成这一过程:选择合适的模板:选择一个结构清晰、易于修改的HTML模板。确保模板支持响应式设计,能够在不同设备上良好显示。熟悉模板结构:仔细阅读模板提供的文档,了解其文件组织方式、命......
  • java学院技能鉴定中心证书管理系统论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,人类已全面进入信息化时代。在各个领域,软件和管理系统不断涌现,成为提高办公效率和推动经济发展的关键因素。在教育领域,学......
  • java绿色生活环保宣传网站论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着全球环境问题的日益严峻,如气候变化、资源短缺和环境污染等,人们对绿色生活的关注度不断提高。在互联网时代,信息传播迅速且广泛,建立一个绿色生......
  • HTML+CSS+JS制作高仿小米官网网站(内附源码,含6个页面)
    一、作品介绍HTML+CSS+JS制作一个高仿小米官网网站,包含首页、商品详情页、确认订单页、订单支付页、收货地址管理页、新增收获地址页等6个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。二、页面结构1.顶部导航栏包含Logo、主导航菜单(手机、电视......
  • Fast-DDS源码阅读笔记(四)-participant是如何创建的
    Publisher的创建与发送消息发送消息的流程如下DomainParticipant的创建DomainParticipantFactory该实例管理着当前进程创建的所有DomainParticipant,UML类图如下其中的participants_存储着DomainID到对应的Participant之间的映射DomainParticipant创建的DomainParticipa......
  • 「全网最细 + 实战源码案例」设计模式——外观模式
    概念外观模式是一种结构型模式,为复杂的子系统提供一个统一的接口,使得子系统的功能对外界更加简单、易用。与真实世界的类比当你通过打电话给商店下达订单时,接线员就是该商店所有服务和部门的外观。接线员为你提供了一个包含购物系统、支付网关、送货等服务的简单语言接口......
  • flask框架网上订餐系统毕设源码+论文
    文件加密系统的设计与实现tp835本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于网上订餐系统的研究,现有研究主要集中在大型商业订餐平台的运营模式和用户体验方面1。在校园等特定......
  • flask框架青少年编程在线考试系统毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于青少年编程在线考试系统的研究,现有研究多集中在编程教育的一般性探讨,如编程课程设置、编程思维培养等方面1,专门针对青少年编程在......
  • flask框架无人之境智能酒店服务平台的设计与实现毕设源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于智能酒店服务平台的研究,现有研究主要集中在传统酒店服务的数字化转型方面,如酒店预订系统、客房管理系统等的单独优化。专门针对无......