扫描二维码,下载安卓APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

Android Launcher应用开发

综合评级:
★★★★★

定价:
¥69.00

作者:
张泳

出版社:
人民邮电

出版日期:
2016/07/01

页数:
365

ISBN:
9787115427144

书籍介绍

基于android 6.0全面讲解android桌面体系 深入解析android系统应用程序launcher3 广泛涵盖launcher清单、应用程序组件、资源配置、ui组件、launcher操作及protocol buffer launcher是android系统中十分重要的系统应用程序,本书从应用程序开发的角度全面解析了launcher的技术细节。

主要内容包括:

1.从launcher的清单入手,详细解析了activity、广播接收器、内容提供者的使用方法,以及相关生命周期管理的技术细节;

2.通过launcher中的一些重要工具,全面介绍了launcher对于线程以及内存的管理,这些技术和经验 有助于开发者提升开发能力;

3.protocol buffer是google力推的新技术,在launcher中有着广泛的应用,本书对其中的细节进行了深入的讲解。

作者简介

张泳 Android开发工程师,对Android Launcher有深入研究和理解,熟悉Android SDK工作原理和OpenGL等技术,并对重力感应、NFC、SIP有所研究。目前主要从事Android系统应用开发以及定制Android版本(修改Launcher、Settings和锁屏等)的工作。在实践中解决了Android 2.1到Android 4.4原生代码中的一些疑难问题,独立完成了Android平台上多个控件的开发。

目录

第一部分  launcher开发基础

第1章 launcher简介  2

1.1  总体结构  2

1.2  launcher3的交叉编译  5

1.2.1  launcher3的主体编译  7

1.2.2  protocol buffer的debug工具依赖库编译  8

1.2.3  生成protocol buffer的测试工具  9

1.2.4  launcher3的编译  9

1.3  launcher3的应用程序体系  10

1.3.1  launcher3的基础信息  10

1.3.2  launcher3的权限设置  10

1.3.3  launcher3的应用程序根节点配置  11

1.3.4  launcher3的应用程序组件配置  13

1.4  protocol buffer设计  16

第2章 launcherapplication  17

2.1  创建launcher应用程序  17

2.2  launcher应用程序终止  18

2.3  注意事项  18

第二部分  launcher的控制中心

第3章 launcher的状态保存与恢复  22

3.1  Android的状态保存机制  22

3.2  android的状态恢复机制  29

3.2.1  onrestoreinstancestate的调用  29

3.2.2  onrestoreinstancestate的调用条件  32

3.2.3  activity中的状态恢复  34

3.2.4  launcher中的状态恢复  35

第4章 初始化桌面  36

4.1  初始化launcher运行环境  37

4.2  为生成launcher的动态网格进行必要的准备  37

4.3  生成动态网格  39

4.4  获取共享数据对象以及建立launcher与launchermodel的联系  39

4.5  根据动态网格刷新图标缓冲区  40

4.6  初始化拖曳控制器  40

4.7  获取应用程序运行状态  41

4.8  创建并启动widget host  42

4.9  检查配置是否有更新  42

4.10  装载launcher布局以及实例化相关控件  46

4.11  根据动态网格的属性部署桌面  48

4.12  launcher的状态恢复  49

4.13  监听widget配置变化  51

4.14  加载桌面数据  52

4.15  更新必要的图标  52

4.16  解锁launcher的方向设定  53

4.17  首次使用时显示桌面的帮助界面  54

第5章 home键:launcher的另一种启动方式  56

5.1  launcher的重要配置  56

5.2  home键的框架行为  57

5.2.1  导航栏的实现  57

5.2.2  窗口管理器的处理  58

5.2.3  launcher的相关处理  59

第6章 launcher的显示  63

6.1  关于activity的onresume  63

6.2  activity类的onresume方法实现  63

6.3  launcher的onresume实现  64

第7章 launcher的状态  68

7.1  activity的暂停状态  68

7.1.1  activity暂停状态发生的场景  68

7.1.2  activity中暂停的实现  73

7.1.3  launcher的暂停过程  74

7.2  activity的启动状态  75

7.2.1  activity中onstart的实现  75

7.2.2  launcher的onstart实现  76

7.3  activity的停止状态  76

7.3.1  activity中onstop的实现  77

7.3.2  launcher的onstop实现  77

7.4  launcher的销毁状态  78

7.4.1  销毁状态简介  78

7.4.2  什么时候会被销毁  78

7.4.3  销毁状态的处理  81

第8章 launcher的启动应用及等待结果  85

8.1  在launcher中启动应用  85

8.1.1  安全启动应用程序的通用方法  86

8.1.2  真正启动应用程序的方法  86

8.2  启动应用并等待结果  89

8.3  launcher的应用场景  90

8.3.1  场景1:往桌面上添加桌面小部件时  90

8.3.2  场景2:往桌面上添加应用程序的快捷方式时  92

8.3.3  场景3:用户启动选择壁纸时  93

8.3.4  场景4:创建桌面小部件时  93

8.3.5  场景5:桌面小部件的视图未能完全恢复时  95

8.4  应用程序处理端如何设置必要的返回  96

8.5  处理返回结果  97

第9章 launcher的返回键处理  99

9.1  activity的onkeydown方法的实现  99

9.2  activity的onkeyup方法的实现  100

9.3  activity的onbackpressed方法的实现  101

9.4  launcher的onbackpressed方法  101

第10章 launcher的按键处理  104

10.1  onkeydown和onkeyup方法  104

10.1.1  activity中的onkeydown方法  104

10.1.2  launcher的onkeydown方法  110

10.2  自主分发按键事件  112

10.2.1  activity的dispatchkey-event实现  112

10.2.2  launcher中的按键分发  113

第11章 launcher的窗口周期  115

11.1  应用程序中activity的创建  115

11.2  应用程序窗口的创建  119

11.3  窗口中设置ui  121

11.3.1  在窗口中设置布局  121

11.3.2  安装窗口容器  123

11.3.3  初始化应用程序的actionbar  124

11.4  launcher中实现的窗口状态变化接口  124

11.4.1  应用程序添加到窗口中  124

11.4.2  应用程序从窗口中拆离  128

11.4.3  窗口焦点变化  131

第12章 launcher实现的框架接口  132

12.1  控件点击事件监听接口  132

12.1.1  设置点击监听器方法  132

12.1.2  点击事件的处理机制  133

12.1.3  launcher的点击事件处理  134

12.2  控件长按事件监听接口  142

12.2.1  什么条件下被认为是长按事件  142

12.2.2  launcher的控件长按事件处理  146

12.3  launcher的touch事件  148

12.3.1  创建应用程序窗口与底层输入设备之间的关联  148

12.3.2  viewrootimpl中window- inputeventreceiver类的实例化  152

12.3.3  基于窗口管理服务的消息分发  153

12.3.4  touch事件的应用程序之旅  156

第13章 launcher控制接口的实现  162

13.1  launchermodel的callbacks接口的定义  162

13.2  指示launcher显示时需要重新加载数据  164

13.3  获取当前正在显示的桌面页索引  164

13.4  加载workspace的预处理  165

13.5  批量添加快捷方式或者文件夹  166

13.6  绑定并且添加桌面页  169

13.7  绑定文件夹  170

13.8  指示加载过程完成  170

13.9  绑定桌面小部件  172

13.10  绑定应用程序菜单界面数据  175

13.11  批量添加应用程序一体化操作  175

13.12  更新应用程序  177

13.13  应用程序已经被恢复  177

13.14  更新应用程序状态  178

13.15  更新应用程序信息  178

13.16  应用程序被删除  178

13.17  更新应用程序菜单快捷方式与桌面小部件信息  179

13.18  更新搜索相关信息  179

13.19  是否在应用程序菜单按钮范围内  180

13.20  保存同步加载页面  180

第14章 launcher的内部工具  181

14.1  客户定制页面  181

14.1.1  组装定制化页面内容  181

14.1.2  定制化页面的变化信号处理  182

14.1.3  添加定制化页面接口  182

14.1.4  定制化页面的属性及控制  184

14.1.5  默认的定制化页面  184

14.2  launcher3的搜索  184

14.2.1  发现搜索提供者  185

14.2.2  将搜索信息转变为可填充的视图  185

14.3  launcher的一些工具  187

14.3.1  桌面组件的id分配  187

14.3.2  生成应用程序快捷方式的方法  1881

4.3.3  添加桌面组件  189

14.4  桌面和应用程序菜单之间的切换  195

14.4.1  桌面的显示  195

14.4.2  显示应用程序菜单界面  196

14.4.3  进入预览模式  196

第三部分  lauhcher开发进阶

第15章 launcher的数据库  198

15.1  关于contentprovider  198

15.2  launcher数据库组件的配置  199

15.2.1  launcher数据库组件的访问权限定义及其使用方法  199

15.2.2  launcher数据库组件的配置  200

15.2.3  读写权限的使用  201

15.3  launcher的数据库详解  201

15.3.1  launcher的数据库实现  201

15.3.2  launcher的contentprovider  211

15.4  launcher数据库工具  216

15.4.1  launcher数据库删除工具  217

15.4.2  launcher数据库合并工具  217

15.4.3  必要时导入默认桌面配置  222

15.4.4  获取默认配置文件解析器实例  224

15.4.5  launcher数据标志清理工具  224

15.5  android数据库实战  225

15.5.1  关于数据的约定  225

15.5.2  定义并使用tulingdbdemo的读写权限  225

15.5.3  数据库框架搭建  226

15.5.4  数据库文件以及表的定义  226

15.5.5  定义访问数据库的访问接口  228

15.5.6  contentprovider的实现  229

15.5.7  操作数据库  232

第16章 launcher的广播接收器  234

16.1  launcher中的广播概述  234

16.1.1  壁纸变更广播接收器  234

16.1.2  桌面小部件容器的重置广播接收器  235

16.1.3  安装快捷方式的接口  235

16.1.4  卸载快捷方式的接口  235

16.1.5  管理应用程序的广播接收器  236

16.1.6  launcher的中枢神经:launchermodel  236

16.2  壁纸变更广播接收器  237

16.3  桌面小部件容器的重置广播接收器  237

16.3.1  概况  237

16.3.2  注意事项  238

16.3.3  容器重置处理的流程  239

16.4  快捷方式的安装接口  242

16.4.1  安装快捷方式接口的使用实例  242

16.4.2  添加快捷方式的入口实现  243

16.4.3  launcher2与launcher3的区别  247

16.5  快捷方式的卸载接口  247

16.5.1  卸载快捷方式接口的使用  248

16.5.2  卸载快捷方式入口实现  248

16.6  管理应用程序的广播接收器  251

第17章 launcher的数据中心:launchermodel  252

17.1  launchermodel的创建  252

17.2  launchermodel的构造函数  253

17.3  与launchermodel的沟通方式  255

17.3.1  launchermodel操作的回调接口  255

17.3.2  广播接口  257

17.3.3  launchermodel的应用程序级别接口  258

17.4  launchermodel的加载任务loadertask  267

17.4.1  loadertask的定义、属性及构造  268

17.4.2  loadertask状态查询接口  269

17.4.3  指定页面加载接口  270

17.4.4  停止加载接口  270

17.4.5  获取launcher的通知接口  271

17.4.6  loadertask的run接口实现  272

17.4.7  loadertask的桌面数据加载及绑定工具  274

17.4.8  加载过程工具  287

17.5  桌面空间的处理  293

第18章 launcher的壁纸配置  295

18.1  如何通过launcher设置壁纸  295

18.2  launcher3壁纸代码结构与使用简介  296

18.3  壁纸资源的来源  298

18.3.1  来源一:指定系统应用的某些资源  299

18.3.2  来源二:指定系统应用中所定制的路径下的图片资源  300

18.3.3  来源三:launcher自带的壁纸资源  301

18.3.4  来源四:android系统默认壁纸  302

18.4  launcher3壁纸的内部分类  305

18.4.1  功能性选项:pickimage-info  305

18.4.2  uri类型壁纸项:uriwallpaperinfo  307

18.4.3  文件类型的壁纸项:filewallpaperinfo  311

18.4.4  资源类型的壁纸项:resourcewallpaperinfo  312

18.4.5  默认壁纸项:defaultwallpaperinfo  313

18.5  关于壁纸的工具  315

18.5.1  设置系统壁纸的可见性  315

18.5.2  设置壁纸尺寸工具  316

18.5.3  设置壁纸的方法  317

18.6  利用launcher设置壁纸  318

第19章 launcher的上下文  319

19.1  launcherappstate的使用  319

19.1.1  launcherappstate初始化的前提  319

19.1.2  launcherappstate的初始化  320

19.2  launcher应用程序被终止的必要清理  321

19.3  监听数据库变化的观察者  321

19.4  获取屏幕方向的工具  322

19.5  关于弱引用  322

19.6  其他接口的应用  323

第20章 launcher中的备份与还原  325

20.1  应用程序备份代理器的配置  325

20.2  备份与管理服务的开启与关闭  326

20.3  实现数据备份与还原代理的帮助类  327

20.3.1  launcherbackuphelper的performbackup方法  327

20.3.2  initializeiconcache方法  330

20.3.3  launcherbackuphelper的restoreentity方法  336

20.4  launcher数据备份与还原的代理  338

20.4.1  创建数据备份与还原代理  338

20.4.2  应用程序的数据还原  339

第21章 基于google的protocol buffer协议开发  341

21.1  实际应用场景概述  341

21.1.1  备份流程  341

21.1.2  还原流程  341

21.2  protocol buffer简介  342

21.3  pb消息的定义  344

21.3.1  指定字段的类型  344

21.3.2  为消息字段指定tag  345

21.3.3  为消息字段指定规则  345

21.3.4  增加消息定义  346

21.3.5  为消息添加注释  347

21.3.6  编译.proto文件概况  347

21.4  简单pb消息的配置  348

21.4.1  pb的基础数据类型  348

21.4.2  基础数据类型的默认配置  349

21.4.3  pb的枚举类型  350

21.5  复合pb消息的定义  351

21.5.1  在消息中使用其他消息  351

21.5.2  pb中的内嵌消息  353

21.6  pb消息的高级用法  354

21.6.1  升级一则消息  354

21.6.2  pb的map类型  355

21.6.3  pb的包  355

21.6.4  pb的其他选项  356

21.7  生成代码  358

21.7.1  创建protocolbuffdemo工程  358

21.7.2  编写第一个proto文件  360

21.7.3  使用protoc工具编译tulingmessage.proto  361

21.7.4  使用生成tulingmessages类  362

......