Andorid Launcher程序代码分析

简介: Andorid Launcher程序代码分析

Launcher是Android系统的桌面系统,是比较重要也比较复杂的程序,这里对其代码做一个分析,希望起到抛砖引玉的作用。

1. Launcher有什么?live folder , widget , shortcut , wallpaper,见onActivityResult

2. UI分成3部分:workspace,  slibingdrawer,  deletezone

3. Menu: 见onCreateOptionsMenu in launcher.java

4. launcher类是个activity,遵循activity的生命周期。

5. 资源文件比较多,这里只关注Layout相关的文件

代码分析的主线:

1.  了解类

2.  了解类的关系

Launcher工程中的类:

AddAdapter: 维护了live fold  , widget , shortcut , wallpaper 4个ListItem ,长按桌面会显示该列表

AllAppsGridView:显示APP的网格

ApplicationInfo:一个可启动的应用

ApplicationsAdapter:gridview的adapter

BubbleTextView:一个定制了的textview

CellLayout: 屏幕网格化

DeleteZone:UI的一部分

DragController,dragscroller, dragsource, droptarget: 支持拖拽操作

DragLayer:内部支持拖拽的viewgroup

FastBitmapDrawable:工具

Folder:Icons的集合

FolderIcon:出现在workspace的icon 代表了一个folder

FolderInfo: ItemInfo子类

HandleView:一个imageview。

InstallShortcutReceiver,UninstallShortcutReceiver:一个broadcastrecier

ItemInfo:代表Launcher中一个Item(例如folder)

Launcher: Launcher程序的主窗口

LauncherApplication:在VM中设置参数

LauncherAppWidgetHost,LauncherAppWidgetHostView,:Widget相关

LauncherModel:MVC中的M

LauncherProvider:一个contentprovider,为Launcher存储信息

LauncherSettings:设置相关的工具

LiveFolder,LiveFolderAdapter,LiveFolderIcon,LiveFolderInfo:livefolder相关

Search:搜索

UserFolder,UserFolderInfo:文件夹包含applications ,shortcuts

Utilities:小工具

WallpaperChooser:选择wallpaper的activity

Workspace:屏幕上的一块区域

widget : 代表启动的widget实例,例如搜索

Launcher中类的关系,见下图(由于篇幅有限,不能把所有关系一一画出)。

总结

1) Launcher中实现了MVC模式(M:launchermode , V:draglayer ,C: launcher),以此为主线,可以得到Launcher对各个组件管理的细节(如drag的实现)。

2) 如果开始就深入各个实现细节则会发现千头万绪,很难有个清醒的方向。

相关文章
|
人工智能 监控 API
阿里云百炼产品月刊【2025年5月】
本文介绍了阿里云百炼平台在2025年6月的产品和模型更新内容,重点涵盖资源包优惠、新模型上线及应用能力增强。
734 0
|
3月前
|
存储 供应链 算法
【鲁棒优化】微电网鲁棒优化定价方案研究(Matlab代码实现)
【鲁棒优化】微电网鲁棒优化定价方案研究(Matlab代码实现)
118 0
|
5月前
|
存储 缓存 前端开发
http协议调试代理工具,Fiddler免费版下载,抓包工具使用教程
Fiddler是一款功能强大的HTTP协议调试代理工具,能记录并检查电脑与互联网间的HTTP通信,支持断点设置和数据编辑。相比其他网络调试器,Fiddler操作更简单且用户友好,支持查看Cookie、HTML、JS、CSS等文件内容。它还具备HTTPS抓包、过滤设置、统计页面总重量等功能,适用于安全测试与功能测试。通过插件扩展,用户可自定义视图或分析缓存行为。支持多种HTTP请求方法(如GET、POST等)及状态码分类(1xx-5xx),是开发者调试网络请求的得力工具。同类工具有HttpWatch、Firebug、Wireshark等。
535 1
|
消息中间件 存储 API
|
缓存 开发工具 Android开发
Launcher3 一键改变Icon Shape 原理浅析
Launcher3 一键改变Icon Shape 原理浅析
524 0
|
SQL XML 监控
SpringBoot框架日志详解
本文详细介绍了日志系统的重要性及其在不同环境下的配置方法。日志用于记录系统运行时的问题,确保服务的可靠性。文章解释了各种日志级别(如 info、warn、error 等)的作用,并介绍了常用的日志框架如 SLF4J 和 Logback。此外,还说明了如何在 SpringBoot 中配置日志输出路径及日志级别,包括控制台输出与文件输出的具体设置方法。通过这些配置,开发者能够更好地管理和调试应用程序。
390 0
|
JavaScript 前端开发 关系型数据库
PHP在现代Web开发中的角色和未来趋势
【8月更文挑战第21天】随着技术的不断进步,PHP作为一门历史悠久的编程语言,在Web开发领域一直扮演着重要角色。本文将探讨PHP的核心优势、面临的挑战以及未来的发展趋势,旨在为开发者提供关于是否继续投资PHP技能的参考。文章将通过分析PHP的灵活性、社区支持和性能优化等方面,展示其在现代Web开发中的不可替代性,并预测PHP在未来技术生态中可能的发展路径。
|
关系型数据库 PostgreSQL
postgresql字符串拼接语法
【5月更文挑战第6天】postgresql字符串拼接语法
766 0
|
消息中间件 Java Linux
C语言-线程池代码
github 地址:常用的C工具代码,这里的工具包含了C语言实现的线程池,hashtable,list,md5,字符串操作,消息队列等很多常用的工具,我这里就不一一说明了,感兴趣的朋友可以自行下载研究,工作中肯定用的上。
159 0