Android4.4-Launcher源码分析系列之概述

这段时间研究了安卓4.4的Launcher源码,决定把自己的收获分享一下,欢迎各位留言.

把4.4的Launcher源码导入到eclipse中时会报一些错误,这是因为涉及到一些隐藏的api和资源.需要以下3个jar包

1.ramework_intermediates/classes.jar                                   这个主要是android的框架类

2.android-common_intermediates/classes.jar                        这个包含com.android.common.Search这个类

3.core_intermediates/classes.jar                                           这个包包含dalvik.system.VMRuntime这个类

我之前在网上下载了一个可以直接在eclipse上运行的源码,链接在此:点击打开链接

Launcher的源码还是比较复杂的,很多类,如下图


      

我将一些主要的类的功能说明列一下,便于大家理解

AddAdapter.java:为setWallPaper提供adapter;
Alarm.java:提供定时操作,比如把快捷方式拖动到垃圾箱后让垃圾箱消失再回复到原有的桌面;
AllAppsList.java:保存所有的app信息;
AllAppsView.java:对app的视图进行控制;
AppsCustomizePagedView.java:是all app界面包括app和widget两个部分,其中PagedViewCellLayout.java和PagedViewGridLayout分别用来存放app和widget;
AppsCustomizeTabHost.java:是all app的tabhost;
AppWidgetResizeFrame.java:用来改变拖拽到桌面上的widget的大小;
BubbleTextView.java:是每个桌面上快捷方式的text;
Workspace.java:是抽象的桌面的所有屏,其中的每一屏是一个CellLayout.java,而CellLayoutChildren.java是CellLayout.java的成员,它具体用于存放每个apk的快捷方式;
Cling.java:是第一次使用android手机的帮助手指;
DeferredHandler.java:是配合LauncherModel.java来进行更新的操作;
DragLayer.java:是launcher.xml的父控件,用于捕捉拖拽、点击等事件;
DragController.java:是DragLayer的controller;
DragScroller.java:用于左右划屏;
DragSource.java:被拖拽的源;
DragView.java:只是一个拖动时显示的对象,并不是真正拖动的对象

DropTarget.java可以放置被拖动的对象的容器

Folder.java:打开文件夹用于显示的类;
FolderIcon.java:文件夹未打开显示在桌面上的图标;
FolderEditText.java:文件夹的名字;
FolderInfo.java:文件夹的信息类,同样继承自ItemInfo.java;
Hotseat.java:桌面下方的一排快捷键,可由ODM定制,其点击、拖拽等操作一般也由Workspace.java完成;
IconCache.java:icon缓存类,用于提高效率;
InstallShortcutReceiver.java:apk安装的receiveer类;
InstallWidgetReceiver.java:widget安装的receiveer类;
ItemInfo.java:launcher中所有信息的父类;
Launcher.java:launcher的controller;
LauncherModel.java:launcher的model;
LauncherApplication.java:launcher的进程类,只要进程不被杀死,其中的对象就可以使用;
LauncherAppWidgetHost.java:用来管理和创建桌面上的widiget(LauncherAppWidgetHostView.java);
LauncherProvider.java:继续自ContentProvider,提供数据库;
PagedView.java:实现翻页操作的抽象父类,有翻页效果的类都需要继承自它;
PendingAddItemInfo.java:是all app中所有widget的信息类;
SearchDropTargetBar.java:search bar;
SpringLoadedDragController.java:是把app从all app拖拽到桌面上的整个桌面显示的缩略图,方便用户查看;
Utilities.java:放置一些公共方法;

WallpaperChooser.java、WallpaperChooserDialogFragment.java:壁纸相关的操作类;

      

接下来我将分为一个系列持续更新,欢迎大家留言.

     

        




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