一、Launcher简介
    Launcher时开机完成后第一个启动的应用,用来展示应用列表和快捷方式、小部件等。Launcher作为第一个(开机后第一个启动的应用)展示给用户的应用程序,其设计的好坏影响到用户的体验,甚至影响用户购机的判断。所以很多品牌厂商都会不遗余力的对Launcher进行深度定制,如小米的MIUI、华为的EMUI等。Android默认的Launcher没有过多的定制,更加简洁,受到源生党的追捧,Google的Nexus系列手机基本都是用的源生Launcher,目前Android源生的Launcher版本是Launcher3,后面的相关内容也都是已Launcher3为基础。
    本篇就先来了解Launcher3的界面和功能。
二、界面和功能
   Launcher3是分两层显示的,第一层就是开机启动和用户按Home键后显示的页面(桌面),第二层是用来展示系统中所有需要显示到Launcher上的应用(我们常说的抽屉)。当然,并非所有的Launcher都有两层结构,比如小米Launcher就只有一层结构,可根据实际需求进行设计。
1.第一层的UI

图1
    如图1,就是Launcher3的第一层,上面放置了应用图标、搜索栏、小部件等,这是我们直观的可以看到的;从代码设计的角度来说,这一个简单的界面其实是分了好几个部分的,图1中已经对各个部分做了一些注释标记,具体含义如下:
    Workspace:用来放置CellLayout,可存在多个,进行滑动、拖拽等操作
    SearchDropTarget:正常情况下显示搜索框,长按应用或小部件时,显示删除(第一层)或者卸载和应用信息(第二次)或者应用信息(不可卸载应用)
    CellLayout:用来放置应用快捷方式和小部件
    PageIndicator:页面指示器,一般情况下不止一个CellLayout
    Hotseat:热键,一般可放置四个热键,中间那个按钮点击进入第二层。
    当然,如果有很多的图标和小部件的话,一个页面肯定放不下,这样就会分多个页面展示,可同左右滑动来切换,如图2,

图2
    基本功能
    1)点击图标打开某个应用,相当于应用快捷方式;
    2)长按图标移动位置或删除,如图3和图4;
    3)也可以长按空白处,看到页面缩小了(概率图模式),显示壁纸和小部件按钮,如图5,用来设置壁纸和添加小部件。

 

图3                                     图4
图5
2.第二层的UI(抽屉)

图6
    抽屉展示了所有需要显示在Launcher上的应用,这里每页显示20个,页数会根据应用的总数动态创建。提供的功能一个是启动应用,这个跟第一层结构一样;另一个是长按事件,需要区分的是系统内置应用和可卸载应用,如图7和图8),长按系统内置应用时隐藏了卸载功能,因为系统内置应用时不可卸载的。
 
图7                                     图8
    虽然整个Launcher3的界面是十分简洁,但是包含大量复杂的自定义view以及触摸事件、拖拽处理等等,所以整个的实现还是比较复杂的,也是要重点分析的。
三、项目代码
    Launcher3作为一个系统组件,系统编译的时候会一同编译,但我们在分析时,为了简单起见,只需要将其作为一个app,并不需要整个的Android编译环境,所以我们用一个Launcher3的AndroidStudio版本就可以了。AndroidStudio版本也在源码的基础上将一些编译错误修改,添加了gradle编译,跟源生的基本一致。
    AndroidStudio的Launcher3代码结构,

图9
    有两个子工程,launcher3和wallpaperpick,launcher3当然就是核心代码了,wallpaperpick是壁纸选择器,在我们这个工程里面,wallpaperpick只存放了一些资源文件,相关的代码实现也是放在launcher3目录下的。
    提供一个下载地址链接:http://download.csdn.net/detail/dingfengnupt88/9564616,后续就用这套代码来做分析。

Launcher3--初识Launcher3相关推荐

  1. android launcher3,Android Launcher3 基本功能分析

    Android Launcher3 基本功能分析 1, 界面的布局, 从上往下分别为:DeleteDropTarget(应用卸载区域,它是一个DropTarget) Workspace(页面容器,一个 ...

  2. android launcher3,android Launcher3 设置默认桌面应用

    launcher3 的默认桌面应用是在 res/xml里 默认有4种样式 default_workspace_3x3.xml default_workspace_4x4.xml default_wor ...

  3. Android Launcher3简介

    一.Launcher3概述 Launcher顾名思义,就是桌面的意思,也是android系统启动后第一个启动的应用程序,这里以android11为例,和其他应用并无区别,只是增加了对其他app和wid ...

  4. Android10.0系统启动之Launcher(桌面)启动流程-[Android取经之路]

    摘要:上一节我们讲完了Android10.0的ActivityManagerService的启动流程,在AMS的最后启动了Launcher进程,今天我们就来看看Launcher的真正启动流程. 阅读本 ...

  5. android-10.0.0_r1安卓系统内置第三方app

    笔记 步骤 在package/apps/目录下创建相应地文件夹如:MyApp 在build/make/target/product/core.mk加入该Module名字 再进行整体的make既可以 d ...

  6. 安卓系统开发编译模块代码

    m    在源码树的根目录下执行编译 mm    编译当前路径下所有的模块,但不包含依赖 mma    编译当前路径下所有模块,且包含依赖 mmm    编译指定路径下所有的模块,但不包含依赖 mmm ...

  7. Launcher3删除开机引导页面

    修改方案如下: 请定位到src/com/android/launcher3/LauncherClings.java文件: class LauncherClings implements OnClick ...

  8. Android Launcher3(一) -- 启动过程

    本文将以代码走读的形式讲解Launcher3的启动过程,主要包括数据的加载,到界面的生成过程 1.入口Launcher.java  @Override  protected void onCreate ...

  9. android+壁纸拉伸,Launcher3自定义壁纸旋转后拉伸无法恢复

    MTK8382/8121平台. 描述:将自定义图片设置成壁纸后,横屏显示时,旋转为竖屏,图片由于分辨率过小,会拉伸:再旋转为横屏,拉伸不恢复. 这两天正在解这个问题,研究了很久,走了不少弯路,最后发现 ...

  10. android launcher3源码分析,Android Launcher3源码分析与修改

    Launcher和Setting是客户需求经常改动的地方,不过其代码量也不容小觑.今天就初略来看一下,以下内容都是本人查阅资料加上自己的理解得出,由于自己水平有限,如果误导还请指出: 先从Androi ...

最新文章

  1. 一次失败的机巡平台对接经历分享
  2. 保护8亿终端 阿里聚安全携手信通院打造B2C资金安全闭环
  3. httpd-2.4.x 版本客户端访问控制
  4. document引用图片的src属性能干嘛_如何实现图片懒加载
  5. Java面试题 Java如何进行高效的数组拷贝?【Arrays.copyOf()】
  6. 祝融号火星车亮相,每小时仅移动40米,为何比乌龟还慢?
  7. HTML,,,音乐,html embed用法
  8. 算法竞赛入门经典 第七章 总结
  9. 样本不均衡、长尾分布问题的方法整理(文献+代码)
  10. ffmpeg 编码如何做带宽控制输出
  11. 【VS开发】【miscellaneous】 Windows下配置Git
  12. 怎么在alert里加图片_麻辣烫里加牛奶,创意吃法,麻辣鲜香吃得超过瘾
  13. 关于SOME/IP的理解
  14. java 拍照后加上日期水印_有什么软件能批量给照片添加拍照日期的水印?
  15. win10 C盘扩大容量
  16. 苹果手机录音怎么批量导出?才知道原来可以这样操作
  17. linux终端打英文间隔太大,解决vs code 内置终端,字体间隔过大问题。(linux centos7成功)...
  18. 为此计算机所有用户安装此项,windows已经阻止此软件因为无法验证发行者,教您提示win已阻止此软件因为无法验...
  19. c语言常数-ox6a是什么意思,C语言第2讲-数据类型运算符和表达式.pdf
  20. 蛊惑者马云发家史(曾推毛氏运动唐僧团队)二

热门文章

  1. 计算机二级aoa系统安装百度云,计算机二级AOA理论题库.pdf
  2. HDU 4348 To the moon(主席树区间修改)
  3. ccs定义的函数不变色_CCS应用中常见的一些小技巧
  4. [转贴]:软件过程改进:经验和教训
  5. 傻瓜式操作实现华为手机与其他品牌电脑实现NFC一碰传
  6. 环形光源matlab仿真,一种多角度环形光源的制作方法
  7. html转换成jsp格式文件
  8. 心理测评系统选购指南
  9. R的一些常用函数【基于尚学堂的部分总结】
  10. XILINX FPGA K7配置启动流程