要理解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方法里完成的。

细说ItemInfo相关推荐

  1. Launcher3-桌面布局+主要的类+启动流程

    一.launhcer3桌面布局 二.launcher3主要的类 LauncherModel: BubblTextView: DragController: LauncherAppState: Drag ...

  2. 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包

    0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...

  3. 细说Java主流日志工具库

    细说 Java 主流日志工具库 日志框架 java.util.logging (JUL) Log4j Logback Log4j2 Log4j vs Logback vs Log4j2 日志门面 co ...

  4. 8天学通MongoDB——第二天 细说增删查改

    2019独角兽企业重金招聘Python工程师标准>>> 看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongod ...

  5. 京瓷1020MFC显示J-05 11是什么意思_Gofair第11讲,细说谷歌系推广的产品优势和推广方式...

    原标题:Gofair第11讲,细说谷歌系推广的产品优势和推广方式 外贸企业经过多年沉浮,一定都明白了:谷歌系推广,才是唯一靠谱的方式. 根据权威的statcounter数据显示,全球流量92%来自谷歌 ...

  6. 细说php--php学习必备

    开发Web应用程序PHP是最理想的工具,易于使用.功能强大.成本低廉.高安全性.开发速度快且执行灵活.全书以实用为目标设计,包含PHP开发最主流的各项技术,对每一个知识点都进行了深入详细的讲解,并附有 ...

  7. 八天学会MongoDB:第三天 细说高级操作

    今天跟大家分享一下MongoDB中比较好玩的知识,主要包括:聚合,游标. 相关文章: 八天学会MongoDB:第一天 基础入门 八天学会MongoDB:第二天 细说增删查改 一: 聚合 常见的聚合操作 ...

  8. 细说firewalld和iptables

    在RHEL7里有几种防火墙共存:firewalld.iptables.ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等. fir ...

  9. John细说PHP的验证码

    细说php中的验证码类创建 我这里自己写了一个验证码类,我来演示一下怎么使用,我是菜鸟一枚,大神请略过.我来讲解一下它的使用方法,总共需要两步即可. 第一步: 下载我制作好的验证码类.下载地址:htt ...

最新文章

  1. ubuntu18.04虚拟机突然不能上网问题解决办法
  2. PriorityBlockingQueue用法
  3. 用scikit-learn学习K-Means聚类
  4. 蓝桥杯 平面切分(欧拉定理)
  5. Linux 进程间通讯详解一
  6. 倍福 在 vs 里 编程 是怎么做到的_截图里的文字要改,字体怎么做到一模一样?...
  7. mysql自动更新时间的触发器
  8. 关于spring注入
  9. getvalue函数怎么使用_单片机基础 —— 使用ADC读取电压值
  10. wincc版本升级_【西门子】WinCC V7.4 SP1:常规信息和安装 (较新).pdf
  11. LaTex学习笔记——中文排版
  12. 网站优化关键词密度多少才是最合适的?
  13. 网络游戏制作---坦克大战(1)
  14. 热爱3D游戏建模,副业兼职外包可以做到什么程度?
  15. 【论文研读】Similarity of Neural Network Representations Revisited (ICML2019)
  16. 用友U8 cloud,信创云ERP的数智先锋
  17. 哈工大的计算机科学与技术三个校区区别,哈尔滨工业大学计算学部研招拟录三地比较,深圳校区初试分数最高...
  18. Promise 拦截器 eslink reject报错 Expected the Promise rejection reason to be an Error
  19. 逆向 - 恢复符号表
  20. (自用)C语言学习过程资料存档

热门文章

  1. raid5磁盘阵列原理以及实现
  2. ISP成像算法基础Day1—Python基础
  3. 批量清理Unity项目Library目录 降低项目空闲占用空间
  4. 基于PANDA做DTI分析
  5. 图片报道:2008年12月4日夜晚,暴风雪突袭烟台(下)
  6. 在线培训考核系统源码
  7. 软件工程--团队答辩
  8. 抖音自媒体上热门的诀窍,高效蹭实时热点的4个技巧
  9. 计算机老师新年贺卡祝福语,老师的新年贺卡祝福语
  10. 会员权益体系内容设计维度