launcher网上的架构图:
1、AddAdapter.java
添加桌面元素的适配器,添加元素shortcuts、widgets、folders、wallpapers
2、AllAppsGridView.java
Icon列表的的主界面,继承gridView。
3、ApplicationInfo.java
一个可启动的应用。
4、DeleteZone.java
gridview的adapter。
5、BubbleTextView.java
一个定制了的textview,主要用于显示桌面应用图标。
6、CellLayout.java
是桌面workspace上的每个页面,有屏幕有三屏
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />
7、DeleteZone.java
luancher的删除区域,继承ImageView。在平时是处于隐藏状态,在将item长按拖动的时候会显示出来。DeleteZone实现了DropTarget和DragListener两个接口。
8、DragController.java
拖动控制接口,为Drag定义的一个接口。
9、DragLayer.java
整个launcher的父节点,实现接口DrayController,是内部支持拖拽的viewgroup。DragLayer实际上也是一个抽象的界面,用来处理拖动和对事件进行初步处理然后按情况分发下去,角色是一个controller。它首先用onInterceptTouchEvent(MotionEvent)来拦截所有的touch事件,如果是长按item拖动的事件不传下去,直接交由onTouchEvent()处理,这样就可以实现item的移动了,如果不是拖动item就把事件传到目标view,交有目标view的事件处理函数做相应处理。如果对事件的特殊需求的话可以修改onInterceptTouchEvent(MotionEvent)来实现所需要的功能。
10、DragScroller.java
拖动时处理滚动接口。
11、DragSource.java
拖动源接口。
12、DropTarget.java
拖动目标。
13、FastBitmapDrawable.java
图片处理工具。
14、Folder.java
由用户选择或由系统生成的一组Icons,这些图片所放在文件。
15、FolderIcon.java
一个图标会出现在workspace中代表文件夹Folder。
16、FolderInfo.java
ItemInfo子类,包含文件夹信息。
17、HandleView.java
launcher抽屉的开关,在android2.2已经没用抽屉了。
18、InstallShortcutReceiver.java
Shortcut安装广播。
19、UninstallShortcutReceiver.java
Shortcut卸载广播。
20、ItemInfo.java
Launcher中对Item的抽象ItemInfo信息,所有类型item的父类。
ItemInfo包含:
id(标识item的id);
cellX(在横向位置上的位置,从0开始);
spanX(在横向位置上所占的单位格);
spanY(在纵向位置上所占的单位格);
screen(在workspace的第几屏,从0开始);
itemType(item的类型,有widget,search,application等);
Container(item所在容器的id,如容器是Folder)。
21、Launcher.java
默认应用程序Activity,整个launcher的程序的入口。
22、LauncherApplication.java
在VM中设置参数,如强制定义自己软件的堆内存大小。
23、LauncherAppWidgetHost.java
24、LauncherAppWidgetHostView.java
25、LauncherAppWidgetInfo.java
第23、24、25与桌面小部件Widget相关。
26、LauncherModel.java
对数据库的操作。主要有几个线程,其中最主要的是ApplicationsLoader和DesktopItemsLoader。ApplicationsLoader在加载所有应用程序时使用,DesktopItemsLoader在加载workspace的时候使用。
27、LauncherProvider.java
launcher的数据库,存储了桌面的item的信息。在创建数据库的时候会loadFavorites(db)方法,loadFavorites()会解析xml目录下的default_workspace.xml文件,把其中的内容读出来写到数据库中。
28、LauncherSettings.java
设置相关的工具。
29、LiveFolder.java
30、LiveFolderAdapter.java
31、LiveFolderIcon.java
32、LiveFolderInfo.java
第29、30、31、32与livefolder实时文件夹相关。
实时文件夹是在SDK1.5中引入的,支持开发人员在设备的默认打开屏幕(我们将其称为设备的主页)上公开 ContentProvider,如联系人信息、笔记和媒体。将ContentProvider(比如Android的 contactsContentProvider)在主页上公开为活动文件夹之后,在联系人数据库中添加、删除或修改联系人时,此实时文件夹能够刷新自身所包含的内容。
33、Search.java
搜索。
34、UserFolder.java
35、UserFolderInfo.java
桌面文件夹包含applications,shortcuts。
36、Utilities.java
各种工具,小工具类。
37、WallpaperChooser.java
选择壁纸wallpaper。
38、Widget.java
表示启动小部件Widget的一个实例,如搜索。
39、Workspace.java
Workspace是一个大面积的壁纸和有限数量的屏幕。每个屏幕包含一些用户可以交互的图标、文件夹或小部件。Workspace是指仅使用固定宽度的Workspace。