Android 5.0开发范例代码大全 (第4版)


BOOKS FOR PROFESSIONALS BY PROFESSIONALS®   《Android 5.0开发范例代码大全(第4版)》提供了100多个来自实践的代码范例,并 且使用完整的、现实的工作代码示例指导读者逐步学习大量实用主题。本书内容基于 Android 5.0(涵盖新的Android Wear和TV SDK)进行了全面更新,同时适用于Android早 期版本。   本书没有抽象描述复杂的概念,而是采用生动的代码示例。在启动新的项目时,读者 可以考虑复制和粘贴本书中的代码与配置文件,然后进行适当修改,使其符合自己的定制 需求。   本书富含提供深刻见解的说明和具有帮助作用的示例,指导读者为当前最热门的移动 平台编写应用。本书提供许多务实的建议,可帮助读者快速而适当地完成工作,从而为读 者节省从头创建项目所需的大量时间! 主要内容 ● 针对Android智能手机、平板电脑以及最新的可穿戴设备和TV应用编写代码 ● 使用外部库节省时间和精力 ● 使用Android NDK和RenderScript提升应用程序性能 ● 设计高性能、响应灵敏和无缝衔接的应用程序 ● 在设备和其他外部硬件之间发送数据 ● 持久保存应用程序数据并在应用程序之间共享 ● 捕获和播放各种设备媒体项 ● 与Web服务通信 ● 最有效地利用用户界面 [美] Dave Smith Jeff Friesen 著 张永强 译 定价:98.00元 www.apress.com Android 5.0 开发范例代码大全(第4版) Android 5.0 开发范例代码大全 ( 第4版 ) 移动开发经典丛书 Android 5.0 开发范例代码大全(第4版).indd 1Android 5.0 开发范例代码大全(第4版).indd 1 2015-9-7 11:55:242015-9-7 11:55:24 移动开发经典丛书 Android 5.0 开发范例 代码大全 (第 4 版) [美] Dave Smith Jeff Friesen 著 张永强 译 北 京 Dave Smith, Jeff Friesen Android Recipes: A Problem-Solution Approach, Third Edition EISBN:978-1-4302-6322-7 Original English language edition published by Apress Media. Copyright © 2014 by Apress Media. Simplified Chinese-Language edition copyright © 2015 by Tsinghua University Press. All rights reserved. 本书中文简体字版由 Apress 出版公司授权清华大学出版社出版。未经出版者书面许可,不得以任何方 式复制或抄袭本书内容。 北京市版权局著作权合同登记号 图字:01-2015-0650 本书封面贴有清华大学出版社防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010-62782989 13701121933 图书在版编目(CIP)数据 Android 5.0 开发范例代码大全:第 4 版 / (美) 史密斯(Smith, D.),(美) 弗里森(Friesen, J.) 著;张永 强 译. —北京:清华大学出版社,2015 (移动开发经典丛书) 书名原文:Android Recipes: A Problem-Solution Approach, Third Edition ISBN 978-7-302-39621-5 .Ⅰ A① … .Ⅱ ①史… ②弗… ③张… .Ⅲ ①移动终端-应用程序-程序设计 .Ⅳ TN929.53① 中国版本图书馆 CIP 数据核字(2015)第 049230 号 责任编辑:王 军 李维杰 装帧设计:牛静敏 责任校对:成凤进 责任印制:杨 艳 出版发行:清华大学出版社 网 址:http://www.tup.com.cn,http://www.wqbook.com 地 址:北京清华大学学研大厦 A 座 邮 编:100084 社 总 机:010-62770175 邮 购:010-62786544 投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn 质 量 反 馈:010-62772015,zhiliang@tup.tsinghua.edu.cn 印 装 者:清华大学印刷厂 经 销:全国新华书店 开 本:185mm×260mm 印 张:44.25 字 数:1077 千字 版 次:2015 年 9 月第 1 版 印 次:2015 年 9 月第 1 次印刷 印 数:1~3000 定 价:98.00 元 ———————————————————————————————————————————— 产品编号:060955-01 译 者 序 Android 是以 Linux 为基础的开源移动设备操作系统,主要用于智能手机和平板电脑, 由 Google 成立的开放手持设备联盟(Open Handset Alliance,OHA)持续领导与开发。经过 这么多年的发展,Android 已成为全球市场占有量最大的智能手机操作系统,该系统目前 发布的最新版本为 Android 5.1.1。 Android 目前是业界领先的移动操作系统和开发平台,推动着目前移动领域的创新活 动和应用生态系统的发展。Android 看起来复杂,但却为带着不同编程语言技能集进入 Android 领域的开发人员提供了丰富的有组织开发工具包。本书旨在帮助开发人员解决实 际开发中的问题,通过直观的例子告诉读者如何利用工具编写 Android 平台上的应用程序。 本书在上一版的基础上进行了更新,首先删除了 Android 入门章节,改为直接介绍各 种处理实际问题的主题。其次,增加了许多采用 API Level 22 的范例,指导读者在最新的 平台上处理实际问题。最后,加入了一些关于 NDK 和 RenderScript 的实际范例,帮助读者 更深入地了解它们。 然而,纸上得来终觉浅,绝知此事要躬行。因此,建议读者在学习本书的过程中打开 Android SDK、NDK 或是其他工具,边学习书中给出的范例边动手操作,如此方能成为理 论和行动上的“巨人”。有人问大师,如何能技近乎道?大师曰:读书,读好书,然后实践 之。万事无他,惟手熟尔! 在这里要感谢清华大学出版社的编辑们,她们为本书的翻译投入了巨大的热情并付出 了很多心血。没有你们的帮助和鼓励,本书不可能顺利付梓。 对于这本经典之作,译者本着“诚惶诚恐”的态度,在翻译过程中力求“信、达、雅”, 但是鉴于译者水平有限,错误和失误在所难免,如有任何意见和建议,请不吝指正。感激 不尽!本书全部章节由张永强翻译,参与翻译活动的还有孔祥亮、陈跃华、杜思明、熊晓 磊、曹汉鸣、陶晓云、王通、方峻、李小凤、曹晓松、蒋晓冬、邱培强、洪妍、李亮辉、 高娟妮、曹小震、陈笑。 读者可以把本书当作一本可供随时查询的参考书、一本资源丰富的示例手册,随时都 可以从中找到有助于高效完成工作的实用建议。 作 者 简 介 Dave Smith 是专业的工程师,一直从事移动和嵌入式平台 的软件与硬件开发。目前,Dave 全身心地投入到 Android 开发 领域。从 2009 年开始,Dave 就从事 Android 平台各个版本上的 开发,包括使用 SDK 编写用户应用程序以及构建和定制 Android 源 代 码 。 Dave 会定期通过他的开发博客 (http://wiresareobsolete.com)和 Twitter 流(@devunwired)分享自 己的想法。 技术评审人员简介 Paul Trebilbox-Ruiz 是科罗拉多博尔德的 Android 开发人 员,并且是博尔德/丹佛当地技术项目的活跃成员。自从来到科 罗拉多州,Paul 已经参与了多次由丹佛谷歌开发人员小组(GDG) 主办的黑客马拉松活动并获得胜利,并且从事了多个公民编码 项目。他目前在 SportsLabs 从事 Android 平台的相关编程工作, 负责为跨美国全境的大学体育项目构建和设计应用程序。 《Android 5.0 开发范例大全(第 4 版)》是 Paul 参与评审的 第一本书籍,本书较早的一个版本是他在学习 Android 平台时 购买的第一本 Android 书籍。在此期间,他正在佛雷斯诺市的 加利福尼亚州立大学攻读计算机科学学士学位。 致 谢 首先,我要感谢我的妻子 Lorie,感谢她在我撰写和构建本书所涉及的各种素材时给予 我的支持和耐心。 其次,我还要诚挚地感谢 Apress 给我安排的编辑团队,是他们使本书尽善尽美。没有 他们所投入的时间和精力,本书就不可能顺利付梓。 —Dave Smith 前 言 欢迎阅读《Android 5.0 开发范例代码大全(第 4 版)》! 如果你正在阅读本书,那么移动设备给软件开发人员和用户带来的无限机遇就不用我 在此赘述了。近年来,Android 已经成为最主要的移动平台之一。对于开发人员而言,必 须了解如何利用 Android,才能确保自己跟得上市场的变化,从而把握各种潜在的机会。 但是任何新平台在常见需求的开发和常见问题的解决方案上都会有不确定性。 我们撰写本书旨在帮助开发人员解决实际开发中的问题,通过直观的例子告诉读者如 何利用工具编写 Android 平台上的应用程序。本书不会很深入地介绍 Android SDK、NDK 或是其他工具。我们不会让隐藏其中的各种琐碎细节和高深理论打击读者的积极性。但这 不意味着这些细节没意思或是不重要。读者应该花时间研究这些细节,以避免在开发中犯 错误。但在解决迫在眉睫的问题时,这些东西通常只会让人分心。 本书不会讲解 Java 编程,也不会介绍如何构建 Android 应用程序的代码块。本书略去 了很多基础知识(例如,如何使用 TextView 显示文本),因为我们觉得这些知识在学过之后 就不会遗忘。相反,本书会帮助熟悉 Android 的开发人员解决很多实际开发中经常要完成 的任务,而这些复杂的任务不是寥寥几行代码就能完成的,自然也很难记住。 读者可以把本书当作可供随时查阅的参考书、资源丰富的示例手册,随时都可以从中 找到有助于高效完成工作的实用建议。 本书主要内容 本书深入介绍使用 Android SDK 解决实际问题。你将学习高效创建在不同设备上都可 良好运行的用户界面的技巧。你将熟练掌握如何合并各种硬件(音频设备、传感器和摄像 头),正是这些硬件使得移动设备成为独特的平台。我们甚至会介绍如何整合 Google 和各 种服务制造商提供的服务与应用程序,从而使系统真正服务于用户。 如果想开发成功的应用程序,性能问题是不可忽视的。大部分时候,这都不是问题, 因为 Android 运行时引擎日渐完善,可将字节码编译成设备的原生代码。然而,你可能需 要利用 Android NDK 以进一步提升性能。第 8 章详述了 NDK,并用 Java 原生接口(Java Native Interface,JNI)绑定将原生代码整合到应用程序中。 NDK 是一种比较复杂的技术,它也会降低应用程序的可移植性。此外,虽然能够提升 性能,但在应对繁重工作时,NDK 也不能很好地处理多个 CPU 内核。幸运的是,Google Android 5.0 开发范例代码大全(第 4 版) VI 通过引入 RenderScript 已经消除了这种冗长编码并简化了多核执行任务,另外还实现了可 移植性。第 8 章介绍 RenderScript 并演示如何使用它的计算引擎(并自动使用 CPU 的多核) 来处理图片。 注意目标 API 级别 在本书中,读者会看到绝大部分的解决方案都有相应的最低 API 级别要求。本书中的 大部分解决方案都只需要 API Level 1,换言之就是这些代码能在目标版本为 Android 1.0 以上的任何应用程序中运行。但是,有些地方也用到了较新版本中引入的 API。注意各个 范例的 API 级别,确保代码与应用程序要支持的 Android 版本相匹配。 本书在线资源 www.apress.com www.tupwk.com.cn/downpage 目 录 第 1 章 布局和视图................................1 1.1 样式化常见组件...........................1 1.1.1 问题 .........................................1 1.1.1 解决方案..................................1 1.1.3 实现机制..................................2 1.2 切换系统 UI 元素 ......................10 1.2.1 问题 ...................................... 10 1.2.2 解决方案............................... 10 1.2.3 实现机制................................11 1.3 创建并显示视图.........................14 1.3.1 问题 ...................................... 14 1.3.2 解决方案............................... 14 1.3.3 实现机制............................... 14 1.4 动画视图.....................................20 1.4.1 问题 ...................................... 20 1.4.2 解决方案............................... 21 1.4.3 实现机制............................... 21 1.5 布局变化时的动画.....................26 1.5.1 问题 ...................................... 26 1.5.2 解决方案............................... 26 1.5.3 实现机制............................... 27 1.6 实现针对具体场景的布局.........30 1.6.1 问题 ...................................... 30 1.6.2 解决方案............................... 30 1.6.3 实现机制............................... 30 1.7 自定义 AdapterView 的空视图.....38 1.7.1 问题 ...................................... 38 1.7.2 解决方案............................... 38 1.7.3 实现机制............................... 38 1.8 自定义 ListView 中的行 ............40 1.8.1 问题 ...................................... 40 1.8.2 解决方案............................... 40 1.8.3 实现机制............................... 40 1.9 制作 ListView 的节头部 ............44 1.9.1 问题 ...................................... 44 1.9.2 解决方案............................... 44 1.9.3 实现机制............................... 44 1.10 创建组合控件...........................52 1.10.1 问题.................................. 52 1.10.2 解决方案 .......................... 52 1.10.3 实现机制 .......................... 52 1.11 自定义过渡动画.......................56 1.11.1 问题.................................. 56 1.11.2 解决方案 .......................... 56 1.11.3 实现机制 .......................... 56 1.12 创建视图变换...........................65 1.12.1 问题.................................. 65 1.12.2 解决方案 .......................... 65 1.12.3 实现机制 .......................... 65 1.13 建立可扩展的集合视图...........71 1.13.1 问题.................................. 71 1.13.2 解决方案 .......................... 72 1.13.3 实现机制 .......................... 72 1.14 小结...........................................82 第 2 章 用户交互 .................................83 2.1 利用 Action Bar ..........................83 2.1.1 问题 ...................................... 83 2.1.2 解决方案............................... 83 2.1.3 实现机制............................... 84 2.2 锁定 Activity 方向......................91 Android 5.0 开发范例代码大全(第 4 版) VIII 2.2.1 问题 ...................................... 91 2.2.2 解决方案............................... 91 2.2.3 实现机制............................... 91 2.3 动态方向锁定.............................92 2.3.1 问题 ...................................... 92 2.3.2 解决方案............................... 92 2.3.3 实现机制............................... 92 2.4 手动处理旋转.............................94 2.4.1 问题 ...................................... 94 2.4.2 解决方案............................... 94 2.4.3 实现机制............................... 95 2.5 创建上下文动作.........................98 2.5.1 问题 ...................................... 98 2.5.2 解决方案............................... 98 2.5.3 实现机制............................... 98 2.6 显示一个用户对话框...............103 2.6.1 问题 .................................... 103 2.6.2 解决方案............................. 103 2.6.3 实现机制............................. 103 2.7 自定义菜单和动作...................108 2.7.1 问题 .................................... 108 2.7.2 解决方案............................. 108 2.7.3 实现机制............................. 109 2.8 自定义 BACK 按键..................114 2.8.1 问题 .................................... 114 2.8.2 解决方案............................. 114 2.8.3 实现机制............................. 114 2.9 模拟 HOME 按键.....................117 2.9.1 问题 .................................... 117 2.9.2 解决方案............................. 117 2.9.3 实现机制............................. 118 2.10 监控 TextView 的变动 ...........118 2.10.1 问题................................ 118 2.10.2 解决方案 ........................ 118 2.10.3 实现机制 ........................ 119 2.11 自定义键盘动作.....................121 2.11.1 问题................................ 121 2.11.2 解决方案 ........................ 121 2.11.3 实现机制 ........................ 121 2.12 消除软键盘.............................124 2.12.1 问题................................ 124 2.12.2 解决方案 ........................ 124 2.12.3 实现机制 ........................ 124 2.13 处理复杂的触摸事件.............125 2.13.1 问题................................ 125 2.13.2 解决方案 ........................ 125 2.13.3 实现机制 ........................ 126 2.14 转发触摸事件.........................142 2.14.1 问题................................ 142 2.14.2 解决方案 ........................ 142 2.14.3 实现机制 ........................ 142 2.15 阻止触摸窃贼.........................146 2.15.1 问题................................ 146 2.15.2 解决方案 ........................ 146 2.15.3 实现机制 ........................ 146 2.16 创建拖放视图.........................149 2.16.1 问题................................ 149 2.16.2 解决方案 ........................ 150 2.16.3 实现机制 ........................ 151 2.17 构建导航 Drawer....................157 2.17.1 问题................................ 157 2.17.2 解决方案 ........................ 157 2.17.3 实现机制 ........................ 157 2.18 在视图之间滑动.....................167 2.18.1 问题................................ 167 2.18.2 解决方案 ........................ 167 2.18.3 实现机制 ........................ 168 2.19 使用选项卡导航.....................177 2.19.1 问题................................ 177 2.19.2 解决方案 ........................ 177 2.19.3 实现机制 ........................ 178 2.20 小结.........................................185 第 3 章 通信和联网............................187 3.1 显示 Web 信息..........................187 3.1.1 问题 .................................... 187 3.1.2 解决方案............................. 187 3.1.3 实现机制............................. 187 目 录 IX 3.2 拦截 WebView 事件 .................192 3.2.1 问题 .................................... 192 3.2.2 解决方案............................. 192 3.2.3 实现机制............................. 192 3.3 访问带 JavaScript 的 WebView...................................193 3.3.1 问题 .................................... 193 3.3.2 解决方案............................. 194 3.3.3 实现机制............................. 194 3.4 下载图片文件...........................196 3.4.1 问题 .................................... 196 3.4.2 解决方案............................. 197 3.4.3 实现机制............................. 197 3.5 完全在后台下载.......................200 3.5.1 问题 .................................... 200 3.5.2 解决方案............................. 200 3.5.3 实现机制............................. 200 3.6 访问 REST API.........................203 3.6.1 问题 .................................... 203 3.6.2 解决方案............................. 204 3.6.3 实现机制............................. 204 3.7 解析 JSON................................222 3.7.1 问题 .................................... 222 3.7.2 解决方案............................. 222 3.7.3 实现机制............................. 222 3.8 解析 XML.................................225 3.8.1 问题 .................................... 225 3.8.2 解决方案............................. 225 3.8.3 实现机制............................. 226 3.9 接收短信...................................235 3.9.1 问题 .................................... 235 3.9.2 解决方案............................. 235 3.9.3 实现机制............................. 236 3.10 发送短信.................................238 3.10.1 问题 ................................ 238 3.10.2 解决方案......................... 238 3.10.3 实现机制......................... 239 3.11 蓝牙通信.................................241 3.11.1 问题 ................................ 241 3.11.2 解决方案......................... 241 3.11.3 实现机制......................... 241 3.12 查询网络连接状态.................250 3.12.1 问题 ................................ 250 3.12.2 解决方案......................... 250 3.12.3 实现机制......................... 250 3.13 使用 NFC 传输数据...............253 3.13.1 问题 ................................ 253 3.13.2 解决方案......................... 253 3.13.3 实现机制......................... 253 3.14 USB 连接 ................................260 3.14.1 问题 ................................ 260 3.14.2 解决方案......................... 261 3.14.3 实现机制......................... 261 3.15 小结.........................................270 第 4 章 实现设备硬件交互与 媒体交互................................271 4.1 整合设备位置...........................271 4.1.1 问题 .................................... 271 4.1.2 解决方案............................. 271 4.1.3 实现机制............................. 272 4.2 地图位置...................................277 4.2.1 问题 .................................... 277 4.2.2 解决方案............................. 277 4.2.3 实现机制............................. 280 4.3 在地图上标记位置...................285 4.3.1 问题 .................................... 285 4.3.2 解决方案............................. 285 4.3.3 实现机制............................. 286 4.4 监控位置地区...........................301 4.4.1 问题 .................................... 301 4.4.2 解决方案............................. 301 4.4.3 实现机制............................. 302 4.5 拍摄照片和视频.......................311 4.5.1 问题 .................................... 311 4.5.2 解决方案............................. 311 4.5.3 实现机制............................. 311 4.6 自定义摄像头覆盖层...............316 Android 5.0 开发范例代码大全(第 4 版) X 4.6.1 问题 .................................... 316 4.6.2 解决方案............................. 316 4.6.3 实现机制............................. 317 4.7 录制音频...................................323 4.7.1 问题 .................................... 323 4.7.2 解决方案............................. 323 4.7.3 实现机制............................. 323 4.8 自定义视频采集.......................325 4.8.1 问题 .................................... 325 4.8.2 解决方案............................. 325 4.8.3 实现机制............................. 326 4.9 添加语音识别...........................330 4.9.1 问题 .................................... 330 4.9.2 解决方案............................. 330 4.9.3 实现机制............................. 330 4.10 播放音频/视频........................332 4.10.1 问题 ................................ 332 4.10.2 解决方案......................... 332 4.10.3 实现机制......................... 332 4.11 播放音效.................................341 4.11.1 问题 ................................ 341 4.11.2 解决方案......................... 341 4.11.3 实现机制......................... 341 4.12 创建倾斜监控器.....................344 4.12.1 问题 ................................ 344 4.12.2 解决方案......................... 344 4.12.3 实现机制......................... 344 4.13 监控罗盘的方向.....................347 4.13.1 问题 ................................ 347 4.13.2 解决方案......................... 348 4.13.3 实现机制......................... 348 4.14 从媒体内容中获取元数据.....351 4.14.1 问题 ................................ 351 4.14.2 解决方案......................... 351 4.14.3 实现机制......................... 352 4.15 检测用户移动.........................355 4.15.1 问题 ................................ 355 4.15.2 解决方案......................... 355 4.15.3 实现机制......................... 356 4.16 小结.........................................366 第 5 章 数据持久化............................367 5.1 制作首选项界面.......................367 5.1.1 问题 .................................... 367 5.1.2 解决方案............................. 367 5.1.3 实现机制............................. 367 5.2 显示自定义首选项...................373 5.2.1 问题 .................................... 373 5.2.2 解决方案............................. 373 5.2.3 实现机制............................. 374 5.3 简单数据存储...........................378 5.3.1 问题 .................................... 378 5.3.2 解决方案............................. 379 5.3.3 实现机制............................. 379 5.4 读写文件...................................383 5.4.1 问题 .................................... 383 5.4.2 解决方案............................. 383 5.4.3 实现机制............................. 383 5.5 以资源的形式使用文件...........390 5.5.1 问题 .................................... 390 5.5.2 解决方案............................. 390 5.5.3 实现机制............................. 391 5.6 管理数据库...............................393 5.6.1 问题 .................................... 393 5.6.2 解决方案............................. 393 5.6.3 实现机制............................. 393 5.7 查询数据库...............................398 5.7.1 问题 .................................... 398 5.7.2 解决方案............................. 398 5.7.3 实现机制............................. 399 5.8 备份数据...................................400 5.8.1 问题 .................................... 400 5.8.2 解决方案............................. 400 5.8.3 实现机制............................. 400 5.9 分享数据库...............................405 5.9.1 问题 .................................... 405 5.9.2 解决方案............................. 405 5.9.3 实现机制............................. 405 目 录 XI 5.10 分享 SharedPreference............412 5.10.1 问题 ................................ 412 5.10.2 解决方案......................... 412 5.10.3 实现机制......................... 412 5.11 分享其他数据.........................421 5.11.1 问题 ................................ 421 5.11.2 解决方案......................... 421 5.11.3 实现机制......................... 422 5.12 集成系统文档.........................428 5.12.1 问题 ................................ 428 5.12.2 解决方案......................... 428 5.12.3 实现机制......................... 429 5.13 小结.........................................442 第 6 章 与系统交互............................443 6.1 后台通知...................................443 6.1.1 问题 .................................... 443 6.1.2 解决方案............................. 443 6.1.3 实现机制............................. 443 6.2 创建定时和周期任务...............459 6.2.1 问题 .................................... 459 6.2.2 解决方案............................. 460 6.2.3 实现机制............................. 460 6.3 定时执行周期任务...................461 6.3.1 问题 .................................... 461 6.3.2 解决方案............................. 461 6.3.3 实现机制............................. 462 6.4 创建粘性操作...........................469 6.4.1 问题 .................................... 469 6.4.2 解决方案............................. 469 6.4.3 实现机制............................. 470 6.5 长时间运行的后台操作...........474 6.5.1 问题 .................................... 474 6.5.2 解决方案............................. 474 6.5.3 实现机制............................. 475 6.6 启动其他应用程序...................480 6.6.1 问题 .................................... 480 6.6.2 解决方案............................. 480 6.6.3 实现机制............................. 481 6.7 启动系统应用程序...................484 6.7.1 问题..................................... 484 6.7.2 解决方案............................. 484 6.7.3 实现机制............................. 485 6.8 让其他应用程序启动你的 应用程序...................................489 6.8.1 问题 .................................... 489 6.8.2 解决方案............................. 489 6.8.3 实现机制............................. 489 6.9 与联系人交互...........................491 6.9.1 问题 .................................... 491 6.9.2 解决方案............................. 491 6.9.3 实现机制............................. 492 6.10 读取设备媒体和文档.............500 6.10.1 问题 ................................ 500 6.10.2 解决方案......................... 500 6.10.3 实现机制......................... 500 6.11 保存设备媒体和文档.............504 6.11.1 问题 ................................ 504 6.11.2 解决方案......................... 504 6.11.3 实现机制......................... 504 6.12 读取消息数据.........................509 6.12.1 问题 ................................ 509 6.12.2 解决方案......................... 509 6.12.3 实现机制......................... 510 6.13 与日历交互.............................521 6.13.1 问题 ................................ 521 6.13.2 解决方案......................... 521 6.13.3 实现机制......................... 521 6.14 执行日志代码.........................527 6.14.1 问题 ................................ 527 6.14.2 解决方案......................... 528 6.14.3 实现机制......................... 528 6.15 创建后台工作线程.................530 6.15.1 问题 ................................ 530 6.15.2 解决方案......................... 530 6.15.3 实现机制......................... 530 6.16 自定义任务栈.........................535 6.16.1 问题 ................................ 535 Android 5.0 开发范例代码大全(第 4 版) XII 6.16.2 解决方案......................... 535 6.16.3 实现机制......................... 535 6.17 实现 AppWidget .....................543 6.17.1 问题 ................................ 543 6.17.2 解决方案......................... 543 6.17.3 实现机制......................... 544 6.18 支持受限制的配置文件.........564 6.18.1 问题 ................................ 564 6.18.2 解决方案......................... 564 6.18.3 实现机制......................... 565 6.19 小结.........................................577 第 7 章 图形和绘图............................579 7.1 用 Drawable 做背景.................579 7.1.1 问题 .................................... 579 7.1.2 解决方案............................. 579 7.1.3 实现机制............................. 580 7.2 创建自定义状态的 Drawable..586 7.2.1 问题 .................................... 586 7.2.2 解决方案............................. 586 7.2.3 实现机制............................. 586 7.3 将遮罩应用于图片...................591 7.3.1 问题 .................................... 591 7.3.2 解决方案............................. 591 7.3.3 实现机制............................. 592 7.4 在视图内容上绘制...................601 7.4.1 问题 .................................... 601 7.4.2 解决方案............................. 601 7.4.3 实现机制............................. 601 7.5 高性能绘制...............................617 7.5.1 问题 .................................... 617 7.5.2 解决方案............................. 617 7.5.3 实现机制............................. 617 7.6 提取图片调色板.......................628 7.6.1 问题 .................................... 628 7.6.2 解决方案............................. 628 7.6.3 实现机制............................. 629 7.7 平铺 Drawable 元素 .................633 7.7.1 问题 .................................... 633 7.7.2 解决方案............................. 633 7.7.3 实现机制............................. 634 7.8 使用可缩放的向量资源...........639 7.8.1 问题 .................................... 639 7.8.2 解决方案............................. 639 7.8.3 实现机制............................. 639 7.9 小结...........................................648 第 8 章 使用 Android NDK 和 RenderScript.........................649 8.1 Android NDK............................649 8.2 使用 JNI 添加原生位...............651 8.2.1 问题 .................................... 651 8.2.2 解决方案............................. 651 8.2.3 实现机制............................. 652 8.3 构建纯原生 Activity.................660 8.3.1 问题 .................................... 660 8.3.2 解决方案............................. 660 8.3.3 实现机制............................. 660 8.4 RenderScript..............................670 8.5 使用 RenderScript 过滤图片....671 8.5.1 问题 .................................... 671 8.5.2 解决方案............................. 672 8.5.3 实现机制............................. 672 8.6 使用 RenderScript 操作图片....677 8.6.1 问题 .................................... 677 8.6.2 解决方案............................. 677 8.6.3 实现机制............................. 677 8.7 使用模糊滤镜仿造透明 覆盖层.......................................683 8.7.1 问题 .................................... 683 8.7.2 解决方案............................. 683 8.7.3 实现机制............................. 683 8.8 小结...........................................693 布局和视图 Android 平台被设计为能运行在各种类型的设备上,这些设备会有各种各样的屏幕尺 寸和分辨率。为了帮助开发人员应对这个挑战,Android 提供了大量的用户界面组件工具 集,开发人员可以根据具体的应用程序选择使用组件或自定义组件。Android 还非常依赖 于可扩展的 XML 框架和设置资源限定符以实现能够兼容各种环境变化的浮动布局。本章 中,我们会学习如何使用这个框架以满足具体的开发需求。 1.1 样式化常见组件 1.1.1 问题 你要让自己的应用程序在所有用户可能运行的 Android 版本上创建一致的外观和体 验,同时减少维护这些自定义元素所需的代码量。 1.1.1 解决方案 (API Level 1) 可以将定义应用程序外观的常见属性抽象化到 XML 样式中。样式是视图自定义属性 的集合,如文本大小或背景色,这些属性应该应用于应用程序内的多个视图。将这些属性 抽象化到样式中,就可以在单个位置定义公共的元素,使得代码更易于更新和维护。 Android 还支持将多个样式共同分组到称为“主题”的全局元素中。主题被应用于整 个上下文(如 Activity 或应用程序),并且定义了应适用于该上下文中所有视图的样式。在应 用程序中启动的每个 Activity 都应用了一个主题,即使你没有定义任何主题。在此情况下, 改为应用默认的系统主题。 第 章 1 Android 5.0 开发范例代码大全(第 4 版) 2 1.1.3 实现机制 为研究样式的概念,接下来创建如图 1-1 所示的 Activity 布局。 图 1-1 样式化的小部件 从图中可以看到,此视图中一些元素的外观需要定制,使其不同于通过所应用的默认 系统主题样式化的常见外观。一种方法是直接在 Activity 布局中定义适用于全部视图的所 有属性。如果这样做的话,则使用的代码如代码清单 1-1 所示。 代码清单 1-1 res/layout/activity_styled.xml
还剩96页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 2 人已下载

下载pdf

pdf贡献者

978879113

贡献于2016-06-16

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf