Launcher简单学习(一)布局基础与常用类的认识
2017-08-04 15:10
295 查看
一、前言:
最近在研究有关Android桌面和主菜单数据加载与UI绑定,索性就写几篇文章来总结一下,先说一下我采用的是Launcher3的源码进行研究的,相对于Launcher2多了一些特性与优化吧。比如添加了RecycleView作为点击更多应用的图标列表布局。二、布局基础
(一)先说一下桌面布局基础吧,一张图给你全新认识。
浅红色部分为桌面区域,叫Workspace,继承于PagedView,可以进行滑动。
黑色部分就是Workspace加载的布局CellLayout,里面加载的是很多应用与文件夹图标,请注意,其实Workspace不是紫色部分中点击中间加载更多APP的跳转界面。
灰色部分为PageIndicator,指示当前Screen位置。
紫色部分为HotSeat,放置常用的应用,中间那个应用图标是跳转展示所有App应用列表界面,其实HotSeat,也是一个CellLayout。
深红色部分为应用快捷方式,其实是一个BubbleTextView,数据相关beans是ShortcutInfo。
绿色部分为小部件(比如天气预报,时间这一类),与布局类带有AppWidget息息相关。
黄色部分为SearchDropTargetBar(搜索栏),拖动的时候搜索栏会
变成删除的区域。
(二)主桌面与加载更多桌面区分一下
虽然在很多品牌的桌面已经没有了加载更多应用这个图标了,但是点击这个加载全部图标的界面并不与上面的布局一致的这个要区分。这个涉及的布局类为allapps包下的AllAppsContainerView。三、认识常用的类
Lanucher,继承Activity,UI的初始化与展现,可以查看方法bindAllApps(加载所有的应用),bindItems(加载桌面应用,注意与前面的bindAllApps区分),bindAppWidget(加载小部件),bindFolders(加载文件夹)追踪一下过程。LauncherModel,数据操作相关,保存桌面运行时状态信息,数据库的读写操作,其中LoadderTash负责数据的读取,图标,小部件的加载,注意查看loadWorkspace可以追踪数据默认来源可以选择第一次默认加载xml。
LauncherProvider,数据来源,数据库的创建等操作。
LauncherAppState,初始化各种对象,注册各种广播与观察者。
ItenInfo,桌面上每个应用信息,比如图标在第几屏,第几行第几列,高宽等。带有Info绝大部分都是继承于它,FolderInfo(文件夹图标),ShortcutInfo(应用图标)
BubbleTextView,图标基础,相关UI操作可在上面进行修改定制。
AppWidgetHostView,小部件相关类,信息存储相关Bean: LauncherAppWidgetInfo。
IconCache,应用图标与标题缓存类。
Utilities,我注意的是它的CreateIconBitmap,可以替换图标以及绘制背景。
DeviceProfile,请留意这个类,很多默认工作区域加载的参数都在这里,比如CellLayout的行数列数,图标的尺寸,以及默认加载的default_workspace_layout.xml都在这里。
这些都是实践的效果,做个小应用来总结一下吧。
相关文章推荐
- 基础学习总结(二)---认识布局与配置测试环境
- Python—基础(简单入门学习)
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- Android基础学习总结(二)——六步轻松搞定RecyclerView简单应用
- spring基础学习-简单实例(三)
- 【简单易懂的AMV图文教程-2】VEGAS基础进阶——认识关键帧
- C#基础 数组的认识、学习、与使用
- C++基础学习之5 - 认识C11新特征
- HTML&CSS基础学习笔记1.21-简单的注册页面
- Java基础学习笔记(二)常用类String
- 基础学习笔记之opencv(21):一个简单有趣的皮肤检测代码
- 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(6)--添加控件到Flight Delay表单
- Android JNI编程之基础学习(一) 认识c语言的基本类型,输出输入函数
- linux下的C语言快速学习—计算机体系结构基础简单了解
- CSS学习笔记之边缘属性和简单的布局
- SVM实现多分类的程序基础工作(二)——通过一个简单libsvm例子迈入libsvm学习的大门
- Css+Div布局学习(一)—Div布局基础
- android布局的基础学习
- WP8基础------布局学习
- android 基础再学习-linkify超链接的简单使用