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:壁纸相关的操作类;
接下来我将分为一个系列持续更新,欢迎大家留言.
【Android4.4-Launcher源码分析系列之概述】
推荐阅读
- 如何寻找情感问答App的分析切入点
- D13|D13 张贇 Banner分析
- 自媒体形势分析
- 2020-12(完成事项)
- Android事件传递源码分析
- Python数据分析(一)(Matplotlib使用)
- Quartz|Quartz 源码解析(四) —— QuartzScheduler和Listener事件监听
- 泽宇读书会——如何阅读一本书笔记
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)