从事launcher开发也有一年有余了,虽然时间比较长了,但是由于是团队开发,其他任务也比较多,所以一直对整个项目的完整情况没有很好的了解,今年换了新的公司,依然是做launcher开发,从新搭建工程,因此借助这个机会完整的学习一下launcher的源码,由于之前没有完全接入,因此也没有做详细的笔记,这次从头参与项目开发,也正好做一下详细的笔记和知识梳理,由于公司项目商业性,为避免泄露公司项目内容,因此本系列教程只做双层launcher的详解,后续会教大家来定制自己的launcher。

桌面使用操作


说到launcher,大家也不会陌生,launcher其实就是一个app,从功能上说,是对手机上其他app的一个管理和启动,从代码上说比其他app多了一个属性,就是在AndroidManifest.xml文件中多了一个“”属性,这个属性就是在启动系统或者按Home键时会过滤这个属性,如果系统中只要一个应用具有这个属性,就会直接跳转到这个界面,也就是这个launcher,如果有多个,会弹出选择框让用户选择并且提示用户是否选择默认设置。

首先我们看一下我运行好的launcher效果图,代码在文章的最后给出,有兴趣的可以star或者fork。下面这两张图是进入桌面后的效果图,第一张为首页图,一般为默认页面,第二张为桌面向左滑动后的效果图。双层桌面一般第一层放制快捷方式和小部件。

01
02

下面这张是第二层界面图,主要是所有应用的列表图。

03

下面一张是长按桌面缩小后显示的菜单界面,主要包含,壁纸、小部件和设置选项。

04

点击壁纸按钮,跳转到下面的壁纸界面,在这个界面你可以更换桌面壁纸。

05

点击小部件按钮,跳转到小部件展示界面,在此界面你可以通过长按拖拽将小部件添加到桌面上面,方便使用和操作。

06

点击设置按钮,跳转到设置界面,你可以设置是否旋转屏幕和设置默认桌面。

07

在桌面上长按应用图标或者小部件,桌面上的搜索框会消失,替代的是一个删除框,你将应用图标或者小部件拖拽于此,会执行删除图标或者删除小部件的功能,如果你从第二层应用图标列表长按图标移动到该删除框会执行卸载应用的操作。

08

桌面结构


上面介绍了桌面的基本操作,下面介绍一下桌面的基本结构。首先看下图:

09

最外层,也就是手机显示层是一个叫做Workspace的控件,其实在Workspace外层还有一个DragLayer层,在他的里面的最上面,是一个叫做SearchDropTargetView的控件,该控件就是搜索或者删除应用的控件。中间最大的一块是CellLayout,一个Workspace包含一个或者多个CellLayout,多个CellLayout横向并排排列,每个CellLayout在宽度上占用一屏,如下图所示:

10

当用户左右滑动时会切换中间的CellLayout部分,如下图所示:

11

CellLayout主要的作用是装在快捷方式或者小部件等。用户通过点击这些快捷方式打开应用。中间的指示点叫做PageIndicator,用来指示你当前处于第几个屏幕上面,也就是第几个CellLayout。最下面的四个图标所占的位置叫做Hotseat,主要是放置短信,拨号等最常用的应用图标。用户左右滑动屏幕时,该控件不做滑动处理。

当用户长按桌面时,中间的CellLayout会缩小,下面的Hotseat和上面的SearchDropTargetView会隐藏,从而显示出隐藏的三个菜单按钮。

12

桌面的基本操作和结构就是这么多,本章只是对桌面的操作和结构做一个概述,从下一篇文章开始讲解桌面的详细信息,包括桌面的启动过程,数据加载过程,应用拖拽等功能。最后附上源码,有兴趣的朋友可以自己下载先行研究。

源码


Github代码:https://github.com/yuchuangu85/Launcher3_mx/tree/launcher3_6.0


本系列教程均为原创,转载请注明出处,多谢。

Android开发群:192508518

微信公众号:Code-MX
qr_code_mx