细说ItemInfo
2016-07-21 12:00
162 查看
要理解ItemInfo,就要先理解桌面有哪几种东西,即有哪几种Item。
小工具:就是AppWidget,时钟小工具,天气小工具,等等。
快捷方式:快速启动应用的图标,一个应用可以有多个重复的快捷方式,workspace和hotseat上的都是快捷方式
文件夹:可以把多个快捷方式放到一块的,用来分类,减少屏幕空间占用。
这些东西都一些共同的,可以抽象出来的东西,有自己的宽度和高度,都有所在的位置和第几等等,而ItemInfo就是抽象出来的东西,打开ItemInfo.java,其中包含的就是这些特征,然而,最关键的是ItemInfo对象和数据库记录是一一对应的。其中有个id的成员,代表的就是数据库中ID。
对于不同的item,ItemInfo也有不同的子类,小工具对应的是LauncherAppWidgetInfo,他增加了小工具的信息(查android文档:AppWidgetProviderInfo);快捷方式对应的是ShortcutInfo,他增加了启动一个Activity所需的Intent信息;文件夹对应的是FolderInfo,他增加了文件夹是否打开的标签,文件夹内图标的信息等等。
ItemInfo的成员有几个值得说说:
container:表明图标是放在哪里的,是放在Workspace还是Hotseat,还是文件夹里面的。如果是放在Workspace上的,那么值是LauncherSettings.Favorites.CONTAINER_DESKTOP,如果是放在文件夹里面的那么container的值就是文件夹FolderInfo的id。
cellX,cellY:表明所在屏幕的哪个位置,cellY表明第几行,cellX表明第几列。如果是小工具占用多行多列的情况,就记录他左上角的位置。
spanX,spanY:宽度和高度,快捷方式和文件夹宽高都是1,小工具的宽高就要看具体情况了。
title:标题,显示应用的名字,文件夹的名字,小工具的话就不需要这个属性了。
itemType: 数据库里保存的表明这个ItemInfo具体是哪种类型的ItemInfo,启动的时候好生成具体的ItemInfo子类对象。
ItemInfo就这么多了,如果你自己看类的继承关系的话,就知道ItemInfo还有几个子类,比如AppInfo,PendingAddItemInfo,我暂时还没有搞清楚这些类的使用流程,等以后搞清楚了再加上来吧。
再说几个关于数据库的类,方便以后找代码:
LauncherProvider: 桌面信息的ContentProvider。
LauncherSettings:存了数据库相关的常量,字段名,字段常量等等。
DatabaseHelper: LaucherProvider的内部类,继承自SQLiteOpenHelper,数据库表的创建就是在它的onCreate方法里完成的。
小工具:就是AppWidget,时钟小工具,天气小工具,等等。
快捷方式:快速启动应用的图标,一个应用可以有多个重复的快捷方式,workspace和hotseat上的都是快捷方式
文件夹:可以把多个快捷方式放到一块的,用来分类,减少屏幕空间占用。
这些东西都一些共同的,可以抽象出来的东西,有自己的宽度和高度,都有所在的位置和第几等等,而ItemInfo就是抽象出来的东西,打开ItemInfo.java,其中包含的就是这些特征,然而,最关键的是ItemInfo对象和数据库记录是一一对应的。其中有个id的成员,代表的就是数据库中ID。
对于不同的item,ItemInfo也有不同的子类,小工具对应的是LauncherAppWidgetInfo,他增加了小工具的信息(查android文档:AppWidgetProviderInfo);快捷方式对应的是ShortcutInfo,他增加了启动一个Activity所需的Intent信息;文件夹对应的是FolderInfo,他增加了文件夹是否打开的标签,文件夹内图标的信息等等。
ItemInfo的成员有几个值得说说:
container:表明图标是放在哪里的,是放在Workspace还是Hotseat,还是文件夹里面的。如果是放在Workspace上的,那么值是LauncherSettings.Favorites.CONTAINER_DESKTOP,如果是放在文件夹里面的那么container的值就是文件夹FolderInfo的id。
cellX,cellY:表明所在屏幕的哪个位置,cellY表明第几行,cellX表明第几列。如果是小工具占用多行多列的情况,就记录他左上角的位置。
spanX,spanY:宽度和高度,快捷方式和文件夹宽高都是1,小工具的宽高就要看具体情况了。
title:标题,显示应用的名字,文件夹的名字,小工具的话就不需要这个属性了。
itemType: 数据库里保存的表明这个ItemInfo具体是哪种类型的ItemInfo,启动的时候好生成具体的ItemInfo子类对象。
ItemInfo就这么多了,如果你自己看类的继承关系的话,就知道ItemInfo还有几个子类,比如AppInfo,PendingAddItemInfo,我暂时还没有搞清楚这些类的使用流程,等以后搞清楚了再加上来吧。
再说几个关于数据库的类,方便以后找代码:
LauncherProvider: 桌面信息的ContentProvider。
LauncherSettings:存了数据库相关的常量,字段名,字段常量等等。
DatabaseHelper: LaucherProvider的内部类,继承自SQLiteOpenHelper,数据库表的创建就是在它的onCreate方法里完成的。
相关文章推荐
- npm查看全局安装过的包
- c# TreeView失去焦点时节点颜色绘制突出显示
- 2016 Multi-University Training Contest 1 T3
- SonarQube分析报告无法上传的问题
- RMQ--ST表算法理解
- 利用EXCEL进行数据挖掘(一)
- 《C++并发编程实战》读书笔记(1)
- Error:Execution failed for task ':pulltorefreshlibrary:processReleaseResources'.
- GPIOLIB实现(一)
- Combination Sum III解题报告
- 百度推广账户大量被盗 违禁关键词被大量提交
- 终于拿证了
- Android Toolbar+DrawerLayout使用细节
- 1070. Mooncake (25)
- ps学习
- Spring整合MyBatis(二)源码分析
- 动态规划之编号动态规划:hdu 1025(dp+二分 求最长上升子序列)
- Linux进程状态解析 之 R、S、D、T、Z、X (主要有三个状态)
- [SDOI2016]部分题选做
- 关于datagrid中数据条件颜色问题