您的位置:首页 > 移动开发 > Android开发

Android launcher 开发笔记(二) launcher中常用的类

2016-07-19 17:14 316 查看
LauncherModel:从名字我们可以看出他跟数据有关系的,保存了桌面运行时的状态信息,也提供了读写数据库的API,他有一个内部类LoaderTask,桌面启动从数据库中读取数据并把图标和小工具添加上去的时候用的就是他。

BubblTextView:图标都是基于他,不过奇怪的是,他是继承自TextView,我之前一直以为是一个线性布局,上面放图片,下面放文字。

DragController:DragLayer只是一个ViewGroup,具体的拖拽的处理都放到了DragController中。

LauncherAppState:单例模式,主要在启动的时候用,他初始化了一些对象,并且注册了广播监听器和ContentObserver。

DragView:在拖动图标的时候跟随手指移动的View就是他。

DragSource,DropTarget:跟拖拽相关的接口,DragSource表示图标从哪里被拖出来,DropTarget表示图标可以被拖到哪里去。

Folder:文件夹打开时候那个view。

FolderIcon: 文件夹图标。

LauncherProvider:数据库类,Launcher3使用了SQLite,数据库文件保存在/data/data/包名/databases/launcher.db 下,有兴趣的同学可以把这个东西拷贝出来,用SQLite的工具看看里面都是怎么保存的。

ItemInfo:运行时保存了桌面上每个项目的信息,包括图标在第几屏,第几行第几列,高度宽度等信息,每一个ItemInfo对象都对应着数据库中的一条记录。在Launcher3源码路径下,会有很多以Info结尾的类,这些类都是ItemInfo的子类,具体代表了桌面上的某个项目。比如说FolderIcon和FolderInfo是对应的,BubbleTextView和ShortcutInfo是对应的,AppWidgetHostView和LauncherAppWidgetInfo是对应的。有了对应关系,可以这样通过view获取ItemInfo对象:

ItemInfo info = (ItemInfo)bubbletextview.getTag();

这样这里的info其实就是ShortcutInfo对象了。

转自http://www.fookwood.com/archives/854
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: