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 :一個 p_w_picpathview 。

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 實例,例如搜索

總結

1) Launcher中實現了MVC模式(M:launchermode , V:draglayer ,C: launcher),以此爲主線,可以得到 Launcher對各個組件管理的細節(如drag的實現)。

2) 如果開始就深入各個實現細節則會發現千頭萬緒,很難有個清醒的方向。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章