Andorid Launcher程序代码分析

来源:互联网 发布:sql insert into date 编辑:程序博客网 时间:2024/06/05 01:45

http://blog.csdn.net/fly123456/article/details/5935589

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

 

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

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

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


原创粉丝点击