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) 如果開始就深入各個實現細節則會發現千頭萬緒,很難有個清醒的方向。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/fly123456/archive/2010/10/12/5935589.aspx