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) 如果开始就深入各个实现细节则会发现千头万绪,很难有个清醒的方向。


  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值