LauncherModel:他跟数据有关系的,保存了桌面运行时的状态信息,也提供了读写数据库的API,他有一个内部类LoaderTask,桌面启动从数据库中读取数据并把图标和小工具添加上去的时候用的就是他。
BubblTextView:图标都是基于他,他是继承自TextView
DragController:DragLayer只是一个ViewGroup,具体的拖拽的处理都放到了DragController中。
LauncherAppState:单例模式,主要在启动的时候用,他初始化了一些对象,并且注册了广播监听器和ContentObserver。
DragView:在拖动图标的时候跟随手指移动的View就是他。
DragSource,DropTarget:跟拖拽相关的接口,DragSource表示图标从哪里被拖出来,DropTarget表示图标可以被拖到哪里去。
Folder:文件夹打开时候那个view。
FolderIcon: 文件夹图标。
【launcher3主要的类】LauncherProvider:数据库类,Launcher3使用了SQLite,数据库文件保存在/data/data/包名/databases/launcher.db 下
ItemInfo:运行时保存了桌面上每个项目的信息,包括图标在第几屏,第几行第几列,高度宽度等信息,每一个ItemInfo对象都对应着数据库中的一条记录。在Launcher3源码路径下,会有很多以Info结尾的类,这些类都是ItemInfo的子类,具体代表了桌面上的某个项目。比如说FolderIcon和FolderInfo是对应的,BubbleTextView和ShortcutInfo是对应的,AppWidgetHostView和LauncherAppWidgetInfo是对应的。有了对应关系,可以这样通过view获取ItemInfo对象:
ItemInfo info = (ItemInfo)bubbletextview.getTag();
这样这里的info其实就是ShortcutInfo对象了。