Andorid Launcher程序代碼分析


 
*詳細布局情況可以通過SDK_dir/tools/hierarchyviewer.bat進行查看。

整個homescreen是一個包含三個child view的FrameLayout(com.android.launcher.DragLayer)。

第一個child就是桌面com.android.launcher.Workspace。這個桌面又包含三個child。每個child就對應一個桌 面。這就是你在Android上看到的三個桌面。每個桌面上可以放置下列對象:應用快捷方式,appwidget和folder。

第二個child是一個SlidingDrawer控件,這個控件由兩個子控件組成。一個是 com.android.launcher.HandleView,就是Android桌面下方的把手,當點擊這個把手時,另一個子控 件,com.android.launcher.AllAppsGridView就會彈出,這個子控件列出系統中當前安裝的所有類型爲 category.launcher的Activity。

第三個child是com.android.launcher.DeleteZone。當用戶在桌面上長按一個widget時,把手位置就會出現一個垃圾桶形狀的控件,就是這個控件。

在虛擬桌面上可以擺放四種類型的對象:
1. ITEM_SHORTCUT,應用快捷方式
2. ITEM_APPWIDGET,app widget
3. ITEM_LIVE_FOLDER,文件夾
4. ITEM_WALLPAPER,牆紙。

類簡介:
AddAdapter:添加桌面元素的適配器。
AllAppsGridView:Icon列表的的主界面,繼承gridView。
DeleteZone:luancher的刪除區域,繼承ImageView。
DragController:拖動控制接口。
DragLayer:整個launcher的父節點,繼承FrameLayout,實現接口DrayController。
DragSource:拖動源接口,定義了void onDropCompleted(View target, boolean success)。
DropTarget:拖動目標,定義很多拖動過程需要的方法:onDrop,onDragEnter,onDragOver,onDragExit,acceptDrop。
HandleView:launcher抽屜的開關,不過在android2.2已經沒用抽屜了。
Launcher:整個launcher的程序的入口,代碼量最大的一個文件。
Workspace:整個界面layout,幾個窗口就是他下面的子節點。

Launcher中實現了MVC模式(M:launchermode , V:draglayer ,C: launcher),以此爲主線,可以得到 Launcher對各個組件管理的細節(如drag的實現)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章