0
点赞
收藏
分享

微信扫一扫

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 条评论