Open fWX228941 opened 5 years ago
android 5.0 用的是launcher3 , launcher2被废弃 类介绍
Launcher.java : Activity默认的图标应用 Default launcher application
LauncherExtension.java : Activity 继承于Launcher 是Launcher的扩展 It primarily serves as a simple class to exercise the LauncherOverlay interface.
WallpaperCropActivity.java : Activity 壁纸裁剪,将图片剪切到合适的尺寸 https://blog.csdn.net/u010083774/article/details/49948433 https://www.jianshu.com/p/03747147e9b6
WallpaperPickerActivity.java : 继承WallpaperCropActivity 壁纸选择器 https://blog.csdn.net/killerz117/article/details/55216191
LauncherWallpaperPickerActivity.java : 继承 WallpaperPickerActivity 壁纸设置界面 https://blog.csdn.net/dingfengnupt88/article/details/51833046
MemoryTracker.java : Service
DragLayer.java :launcherlayout的rootview 用来处理拖动和对事件进行初步处理然后按情况分发下去,角色是一个controller
DragController.java :
LauncherModel.java : 封装的对数据库的操作
Workspace.java : 抽象的桌面。由celllayout组成,从cellLayout更高一级的层面上对事件的处理
CellLayout.java :组成workspace的view,继承自viewgroup,既是一个dragSource,又是一个dropTarget,可以将它里面的item拖出去,也可以容纳拖动过来的item
ItemInfo.java :
UserFolder.java :用户创建的文件夹。可以将item拖进文件夹,单击时打开文件夹,长按文件夹上面标题处可以重命名文件夹。
LiveFolder.java :系统自带的文件夹。从系统中创建出的如联系人的文件夹
DeleteZone.java :删除框。在平时是出于隐藏状态,在将item长按拖动的时候会显示出来,如果将item拖动到删除框位置时会删除item
LauncherModel.java https://blog.csdn.net/qq_27215521/article/details/60868309 https://blog.csdn.net/asd1031/article/details/53314252 https://blog.csdn.net/asd1031/article/details/53344724
LauncherAppState.java https://blog.csdn.net/dax120/article/details/81172582
DynamicGrid.java https://blog.csdn.net/xiaowan0404/article/details/49405053
IconCache.java https://www.aliyun.com/jiaocheng/75092.html https://www.jianshu.com/p/fef27b01cb53
DeviceProfile.java https://blog.csdn.net/qq_27215521/article/details/60871668
Hoatseat https://blog.csdn.net/xch520xx/article/details/51285927 https://blog.csdn.net/qinlei420/article/details/46923309
Launcher:主界面Activity,最核心且唯一的Activity。
LauncherAppState:单例对象,构造方法中初始化对象、注册应用安装、卸载、更新,配置变化等广播。这些广播用来实时更新桌面图标等,其receiver的实现在LauncherModel类中,LauncherModel也在这里初始化。
LauncherModel:数据处理类,保存桌面状态,提供读写数据库的API,内部类LoaderTask用来初始化桌面,把数据绑定到桌面上。
InvariantDeviceProfile:一些不变的设备相关参数管理类,其内部包涵了横竖屏模式的DeviceProfile。
WidgetPreviewLoader:存储Widget信息的数据库,内部创建了数据库widgetpreviews.db。
LauncherAppsCompat:获取已安装App列表信息的兼容抽象基类,子类依据不同版本API进行兼容性处理。
AppWidgetManagerCompat:获取AppWidget列表的兼容抽象基类,子类依据不同版本API进行兼容性处理。
LauncherStateTransitionAnimation:各类动画总管处理执行类,负责各种情况下的各种动画效果处理。
IconCache:图标缓存类,应用程序icon和title的缓存,内部类创建了数据库app_icons.db。
LauncherProvider:核心数据库类,负责launcher.db的创建与维护。
LauncherAppWidgetHost:AppWidgetHost子类,是桌面插件宿主,为了方便托拽等才继承处理的。
LauncherAppWidgetHostView:AppWidgetHostView子类,配合LauncherAppWidgetHost得到HostView。
LauncherRootView:竖屏模式下根布局,继承了InsettableFrameLayout,控制是否显示在状态栏等下面。
DragLayer:一个用来负责分发事件的ViewGroup。
DragController:DragLayer只是一个ViewGroup,具体的拖拽的处理都放到了DragController中。
BubblTextView:图标都基于他,继承自TextView。
DragView:拖动图标时跟随手指移动的View。
Folder:打开文件夹展示的View。
FolderIcon:文件夹图标。
DragSource/DropTarget:拖拽接口,DragSource表示图标从哪开始拖,DropTarget表示图标被拖到哪去。
ItemInfo:桌面上每个Item的信息数据结构,包括在第几屏、第几行、第几列、宽高等信息;该对象与数据库中记录一一对应;该类有多个子类,譬如FolderIcon的FolderInfo、BubbleTextView的ShortcutInfo等。
主要流程
参考文档 https://www.jianshu.com/p/9403a2532b59 https://www.jianshu.com/u/3ed3336df2c6 https://www.jianshu.com/p/71f4580628bf https://me.csdn.net/yl10258 https://blog.csdn.net/dax120?t=1
android 5.0 用的是launcher3 , launcher2被废弃 类介绍
Launcher.java : Activity默认的图标应用 Default launcher application
LauncherExtension.java : Activity 继承于Launcher 是Launcher的扩展 It primarily serves as a simple class to exercise the LauncherOverlay interface.
WallpaperCropActivity.java : Activity 壁纸裁剪,将图片剪切到合适的尺寸 https://blog.csdn.net/u010083774/article/details/49948433 https://www.jianshu.com/p/03747147e9b6
WallpaperPickerActivity.java : 继承WallpaperCropActivity 壁纸选择器 https://blog.csdn.net/killerz117/article/details/55216191
LauncherWallpaperPickerActivity.java : 继承 WallpaperPickerActivity 壁纸设置界面 https://blog.csdn.net/dingfengnupt88/article/details/51833046
MemoryTracker.java : Service
DragLayer.java :launcherlayout的rootview 用来处理拖动和对事件进行初步处理然后按情况分发下去,角色是一个controller
DragController.java :
LauncherModel.java : 封装的对数据库的操作
Workspace.java : 抽象的桌面。由celllayout组成,从cellLayout更高一级的层面上对事件的处理
CellLayout.java :组成workspace的view,继承自viewgroup,既是一个dragSource,又是一个dropTarget,可以将它里面的item拖出去,也可以容纳拖动过来的item
ItemInfo.java :
UserFolder.java :用户创建的文件夹。可以将item拖进文件夹,单击时打开文件夹,长按文件夹上面标题处可以重命名文件夹。
LiveFolder.java :系统自带的文件夹。从系统中创建出的如联系人的文件夹
DeleteZone.java :删除框。在平时是出于隐藏状态,在将item长按拖动的时候会显示出来,如果将item拖动到删除框位置时会删除item
LauncherModel.java https://blog.csdn.net/qq_27215521/article/details/60868309 https://blog.csdn.net/asd1031/article/details/53314252 https://blog.csdn.net/asd1031/article/details/53344724
LauncherAppState.java https://blog.csdn.net/dax120/article/details/81172582
DynamicGrid.java https://blog.csdn.net/xiaowan0404/article/details/49405053
IconCache.java https://www.aliyun.com/jiaocheng/75092.html https://www.jianshu.com/p/fef27b01cb53
DeviceProfile.java https://blog.csdn.net/qq_27215521/article/details/60871668
Hoatseat https://blog.csdn.net/xch520xx/article/details/51285927 https://blog.csdn.net/qinlei420/article/details/46923309
Launcher:主界面Activity,最核心且唯一的Activity。
LauncherAppState:单例对象,构造方法中初始化对象、注册应用安装、卸载、更新,配置变化等广播。这些广播用来实时更新桌面图标等,其receiver的实现在LauncherModel类中,LauncherModel也在这里初始化。
LauncherModel:数据处理类,保存桌面状态,提供读写数据库的API,内部类LoaderTask用来初始化桌面,把数据绑定到桌面上。
InvariantDeviceProfile:一些不变的设备相关参数管理类,其内部包涵了横竖屏模式的DeviceProfile。
WidgetPreviewLoader:存储Widget信息的数据库,内部创建了数据库widgetpreviews.db。
LauncherAppsCompat:获取已安装App列表信息的兼容抽象基类,子类依据不同版本API进行兼容性处理。
AppWidgetManagerCompat:获取AppWidget列表的兼容抽象基类,子类依据不同版本API进行兼容性处理。
LauncherStateTransitionAnimation:各类动画总管处理执行类,负责各种情况下的各种动画效果处理。
IconCache:图标缓存类,应用程序icon和title的缓存,内部类创建了数据库app_icons.db。
LauncherProvider:核心数据库类,负责launcher.db的创建与维护。
LauncherAppWidgetHost:AppWidgetHost子类,是桌面插件宿主,为了方便托拽等才继承处理的。
LauncherAppWidgetHostView:AppWidgetHostView子类,配合LauncherAppWidgetHost得到HostView。
LauncherRootView:竖屏模式下根布局,继承了InsettableFrameLayout,控制是否显示在状态栏等下面。
DragLayer:一个用来负责分发事件的ViewGroup。
DragController:DragLayer只是一个ViewGroup,具体的拖拽的处理都放到了DragController中。
BubblTextView:图标都基于他,继承自TextView。
DragView:拖动图标时跟随手指移动的View。
Folder:打开文件夹展示的View。
FolderIcon:文件夹图标。
DragSource/DropTarget:拖拽接口,DragSource表示图标从哪开始拖,DropTarget表示图标被拖到哪去。
ItemInfo:桌面上每个Item的信息数据结构,包括在第几屏、第几行、第几列、宽高等信息;该对象与数据库中记录一一对应;该类有多个子类,譬如FolderIcon的FolderInfo、BubbleTextView的ShortcutInfo等。