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的实现)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章