
本书回顾了Android系统简史和最新Jelly Bean版本的特征,鼓励开发人员开发更多的Android应用;在细致介绍开发基础之后,以房地产应用为例,演示如何确定产品目标,接着利用现有视图等要素从零开始搭建整个应用,然后使用高级功能进一步优化代码及资源,以达到“精心设计”的目的。另外,本书附录提供了应用推广所需物料等细节。书中案例贯穿了众多细致入微的技巧,有助于读者学习设计、开发和测试流程。
本书赞誉 《Android用户界面设计》是一本绝对优秀的图书,出自一位经验最丰富、知识最渊博的Android开发专家。对每一位Android开发者来说,它都是一份非常实用、高度易读的指南和非常有效的帮助资源。本书的每一章对用户界面设计都有清晰和深刻的理解。我极力推荐本书给那些希望开发Android应用高级用户界面的人。 ——Kyungil Kim Facebook软件工程师 我向所有独自工作,并且想给他们的应用使用一个专业外观界面的所有的Android开发者推荐这本书。这本书的内容相当精彩,覆盖了如何设计优异Android应用的各个方面。 ——Gonzalo Benoffi Coffee and Cookies, Android开发部CEO 在移动应用开发开始之前,设计绝不是开发工作的一部分;而现在设计已经成为不可缺少的部分。本书介绍了一种简单但有效的方式来设计你的应用。它对初学者来说很容易,对有经验的开发者来说,内容也很丰富。对我来说,本书是我能推荐给任何一位Android开发者的最好的书。读本书一遍,就会覆盖你也许花三年时间来开发所学到的知识。我吃惊地看到,从设计线框开始设计的这部分内容是其他书所不能足够清楚解释的(有些甚至都没有覆盖到)。我真的太爱它了!感谢Ian为Android开发者团体作出的极大贡献!这是一本最好的、简单的、有效的书! ——Chakradhar Gavirineni Adeptpros IT Solutions Pvt Ltd Android应用开发者 对于设计、创建布局、渲染Android应用所需要了解的任何内容而言,Ian的这本书是一个无法估量的宝贵资源。“常用任务参考”是一个了不起的附录,它使得这本书成为必备工具书。你要确保在你书桌的一臂之内有这本书。 ——Josh Schumacher HasOffers软件工程师 从前面的几页看,这本书提供了丰富的开发Android用户界面所需要的提示、诀窍和技巧。如果你正在了解所有不同的视图类型,来读这本书——它真正有助于强化理解你应该在什么时候和为什么用各种用户界面组件达到不错的效果(用已实现的例子)。对于正在寻找灵感来改进用户界面以期达到一个优异用户体验的人来说,这本书值得一读。 ——Rechard Sey PassBx Developers 本书赞誉V 前言 无论你是在2008年9月发布的第一台设备之前就已经用上了Android SDK,还你刚完成了你的第一个“Hello, World”应用,你都很可能意识到Android的发展速度让人难以置信。操作系统已经改变和成熟,应用也变得匹配适应。这意味着应用如果要更出色,就会比以前更具挑战。创建一个“足够好的”功能性的用户界面已远远不够了。各种竞争已经开始,现在那些低劣的用户界面的应用以及那些基于其他操作系统敷衍了事的应用完全被用户抛弃。Google已经承诺,在Android4.0 Ice Cream Sandwich版本中,设计主要用户界面和修复可用性时,用户会对他们的设备和下载的应用充满期待。另外,Android 4.1额外的“Project Butter”工作和Android 4.2的持续改进,确保应用流畅和有效变得尤为重要。 设计有很多目标,但是最重要的两点是可用性和视觉吸引力。你希望新用户 能够用上你的应用,而且可以不费力就开始,因为移动用户相比其他任何平台的用 户要更没有耐心。用户需要确切地知道他们能与什么交互,而且在他们精力分散的 时候能立刻完成。那就意味着你必须知道平台惯例是什么,以便利用获取的行为。 你也想要你的应用出类拔萃,因为视觉吸引力能够使用户为你的应用兴奋,而且 可以提升你的品牌。当它运转不错时,能显示出一种高质量的品质,当你的用户把应 用展示给他们的朋友时,会立即形成更大规模的用户基础。如果将你的应用比作一辆 小汽车,你可以将视觉外观和可用性作为设计的要务。小汽车的外观有少许灵活性, 仅局限于实用性和对于潜在客户有用的需求。如果你进入一辆小汽车,却没有方向 盘,你会立刻四下观望并想知道“我怎样控制这个东西?”。应用也是如此,如果用 户启用应用但立马被其操控所困扰,那它就没能通过最基础的可用性测试。 如果你已经拿起了这本书,我可能不必再说设计是何等重要。你已经拥有,你就会发誓一定能制作出漂亮的应用来。 这本书主要从一个开发者的视角来关注Android,也植入了大量的设计感悟。本书试图在设计者和开发者之间的隔阂上架起桥梁,并且教你如何实施伟大的设计。我们不在这里深入关注色彩理论或者Photoshop技巧;我们在这里理解如何设计应用以及如何现实地让应用活灵活现。当你读完本书后,你将能够把你的需求和 反馈与设计师进行交流,甚至自己做一些设计。 这本书将作为一个完整设计和实现流程的教程,也是你可以一遍遍重复使用的参考资料。为了能制作最好的应用,你将了解如何与开发者和设计师进行沟通。你会使应用视觉具有吸引力,同时,在最后关头还能轻松改变不可避免的设计需求。 最终,设计师和开发者都希望他们的应用能让人惊奇,我无比兴奋地告诉你 如何让惊喜发生。 ——Ian G. Clifton 致谢 尽管从拿起笔开始我就一直饱含热诚地创作,但是如果没有众多他人的帮助,本书是不可能完成的。我要感谢责任编辑Laura Lewin,他让我始终保持在正轨上,尽管在估计章节长度和努力程度上,我也许是最差的作者。编辑助理OliviaBasegio记录着所有的进度,尽管有时进展较慢,有时快如闪电。Songlin Qiu是这本书的策划编辑,他设法理解了我凌晨4点写的草稿目录,使得最终章节能够大有提升。我非常感激所有技术评审们的工作;我曾经也做过这个工作,我知道它是多么大的工作量,感谢Joseph Annuzzi、Cameron Banga和Joshua Jamison。写书绝对是一个全职的工作,对我来说,要平衡A.R.O.公司的全职工作、我的家庭(尤其是在节假日期间)和一些其他项目是很大的挑战。特别感谢A.R.O.的 Andy Hickl,谢谢他的通融和对我写书的支持,还有我所有其他的朋友和同事没有 因为我写书而抓狂,因为我在家上班,能节省上下班途中的时间,甚至通过停工来 保证本书章节按计划完成。 当然,我还要感谢家人的支持。我的父母曾告诉我,随着年龄的增长,我可以做任何事情。很显然,我误以为我不得不去做所有的事情。我从未停止让自己学习更多,并且完成我曾经所想的,我感谢他们能够信赖我。 关于作者 Ian G. Clifton是西雅图A.R.O.的用户体验负责人,并且领导着Android开发团队,在那里,他开发了Saga——一种了解你的Android和iOS应用,为了让你以最少的沟通过最好的生活。在他的职业生涯中,他与很多设计师工作过,并且开发了一些著名的Android应用,例如,CNET News、CBS News、Survivor、Big Brother和Rick Steves’Audio Europe。 Ian喜爱科技、艺术和用户体验,这让他走过许多不同的道路。除了Android开发,他还做过平台、网络和桌面的开发工作。他作为卫星、宽频和遥测系统的短期员工供职于美国空军,而且也用铅笔、画笔和相机创作了相当数量的艺术作品。 你可以在Twitter(http://twitter.com/IanGClifton)中收听Ian G. Clifton,还可以关 注他的博客(http://blog.iangclifton.com)了解他关于移动开发的思想。他还发布 了名为The Essentials of Android Application Development(《Android应用开发的要 领》)的系列视频,你可以访问http://my.safaribooksonline.com/video/programming/ Android/9780132996594。 序言 本书读者 这本书主要为那些想更好地理解Android用户界面的Android开发者们准备的,但是它也重点介绍了设计,所以设计师们也能从中受益。为了聚焦在Android用户界面设计重要的主题上,本书假定你已经对Android有一个基本了解。如果你希望学习开发方面的知识,这本书需要你至少制作了一个“Hello,Word”的Android应用,而且不必为开发而设定你的计算机(如果不是这样,那么从Android开发者网站开始是一个好主意:http://developer.Android.com/ training/basics/firstapp/index.html)。如果你是一个设计师,你也许会发现一些 有编码的例子很令人头疼,但是这本书也会给设计师足够有用的知识。例如,第13章“运用画布和高级绘图”,包含了PorterDuff组合这类概念的具体案例,尽管多数设计师都没听说过这些概念,而且也不关心其精确实现方式,但通常会在Photoshop之类的软件中碰到,通常被简单地称为混合模式(例如,“正片叠底”和“变亮”)。通过查看图片样本和细节介绍,设计师们能够理解Android的性能,以及指导开发者关注具体细节。 本书组织架构 本书分为四部分。第1部分“Android用户界面基础”,在读者深入到创建 Android界面的具体类之前,提供了Android用户界面的概要和趋势。同时,这 部分也包括图形和资源的使用。第2部分“完整的设计和开发过程”,反映了 应用开发的各个阶段,始于想法和目标,继而是完成框架和雏形,然后是开发 完整的应用,包括有效的布局、动画等。第3部分“Android用户界面的高级主 题”,探索让应用更有用的方式,包括通过创建可自动更新的列表视图、组合 视图的自定义组件、全自定义视图,以及如图片合成的高级技巧。第4部分“有 益的指导和参考”,包括三个附录:Google Play物料、亚马逊应用商店物料, 以及众多值得了解但并不普遍适用的常见的UI相关任务(类似如何使屏幕上的 导航元素变暗)。 从始至终的重点是简单和清晰的实现方式。你不必担心会埋头苦干于类似在 OpenGL中3D矩阵变换之类的复杂话题;相反,你会学到如何创建流畅的动画,将 PorterDuff混合模式添加到你的自定义视图,以及与触摸事件有效地工作。涉及极 少的数学知识将被拆解,变得极为简单,以至于你几乎意识不到会用到数学知识。 另外,图例让最复杂的例子变得清楚,而每个例子都很实用。 如何使用本书 在深入更具体、更高级的主题之前,本书以一个极宽泛的概述开始。因此, 按顺序阅读是本书的意图,但本书被组织得尽可能让指向简单。即使你是一个高级 开发者,阅读本书所有的章节还是不错的,因为本书覆盖了大量的内容。当然,你 也可以直接跳到你最感兴趣的章节。例如,如果你只想关注创建自定义视图,你可 以直接跳到第12章“开发完全自定义的视图”。 本书站点 你可以在http://auidbook.com以及出版社的网站(www.informit.com/ title/9780321889736)找到本书例子的源代码。在这些网站中,你可以复制整个资 源库,下载完整的ZIP文件,以及浏览个人文件。 本书约定 本书使用了在大多数编程书中都可以找到的典型惯例。例如,代码术语(例 如类的名称和关键词)用等宽(monospace)字体显示。当某类被专门指代(例 如,“你的类应扩展了View类”),则用英文monospace字体。如果它被更多地用 到(例如,“当开发一个视图时,记得在一个真机上测试”),则不会用到专门的 字体。 当一行编码太长而不能在本书中打印成一行时,用一种代码的连续箭头 ()表示连续。 注意 像这样的注意是为了用你也许认为有用的其他信息作为书中的补充 材料。 提示 提示就像这样,在具体的话题中给你建议。 警告 警告就像这样,目的是要你注意到可能遇到的潜在问题或应该留意 的点。
第1部分 Android用户界面基础 第1章 Android用户界面概览 .............................. 1 Android设计简史 ....................................... 2 Android设计站点 .......................................... 2 核心原则 ................................. 3 标准组件 .................................... 12 支持多种设备 ............................... 14 值得注意的变化 ................................. 16 小结 ............................................ 16 第2章 理解视图——用户界面的构架模块 ............................... 17 什么是视图? ............................. 18 显示文本 ..................................................... 22 显示图片 ............................................. 26 聚集用户输入的视图 ....................................... 29 其他值得关注的视图 ............................. 32 事件的监听 ............................................. 35 小结 ............................................ 36 第3章 用View Group与Fragment创建全布局 ..................... 37 ViewGroup .................................................... 38 Fragment ...................... 49 小结 ......................... 52 第4章 添加应用的图形和资源 ..................................... 53 Android中资源的介绍 ...................................................... 54 资源限定符 ............. 54 理解密度 ................ 58 可支持的图片文件 ........................ 59 9-Patch图片 .. 60 XML可绘制对象 .. 62 其他资源 ............... 72 小结 ..................... 76 第2部分 完整的设计和开发过程 第5章 开始一个新的应用 .....77 确定目标 ..................78 概要流程图 ................81 线框图 .......................82 小结 .........................95 第6章 开发应用的基础 .......96 组织为Activity和Fragment .............................................98 把线框拆成视图 ...........106 创建主题和样式 ....121 小结 .....................122 第7章 定稿设计方案 ........123 线框和图形设计 ....124 应用的视觉样式和个性 ....................................124 文本注意事项 ........132 标准图标 .................137 动态内容注意事项 ..138 导航和过渡............139 错误情况 ................139 小结 ........................139 第8章 实现设计方案 ........141 和设计师一起工作 ................................142 切出图形资产 .......143 更新主题和样式 .....147 把comps拆为多个视图 ......................149 提升效率 .................153 多种设备上的基本测试 ......................160 小结 ..........................................162 第9章 进一步优化应用 ....163 层级查看器 ...........164 动画 .................170 自定义字体 ...........180 小结 ....................184 第3部分 Android用户界面的高级主题 第10章 如何处理常用组件 ..185 闪屏 .......................186 加载指示 ..............196 复杂的TextView .....198 自动加载的ListView ........203 小结 ......................................................................208 第11章 为自定义组件而组合视图 ..................................209 什么时候组合视图 .......................210 组合视图以实现其简单协作 .............................210 完成一个多按钮切换开关 ........................222 小结 .............241 第12章 开发完全自定义的视图 ......................................243 常用概念 ..............244 开发自定义视图 ......249 小结 .......................284 第13章 运用画布和高级绘图 ...............................................285 PorterDuff 图片合成 .............................................286 创建自定义的Drawable ..................................305 小结 ......................310 第4部分 有益的指导和参考 附录A Google Play物料 ......311 应用描述 ................312 修改记录 ..............313 应用图标 ...............313 屏幕截图 ................314 主题图片 ................315 推广图..............320 视频(YouTube) ...320 推广你的应用 ..........321 附录B 亚马逊应用商店物料 .......................................323 概述 ................324 应用图标 .................324 屏幕截图 ................325 推广图 ....................326 视频 ....................327 附录C 常用任务参考 ........329 在操作栏中显示加载 .........................................330 撤销软键盘 ...........336 使用全屏模式 ........337 让屏幕保持常亮 ....................................338 确定设备物理屏幕尺寸 ............................338 确定设备DPI ....................................339 检查网络连接 ..........340 检查当前线程是否是UI线程 ........................340 自定义视图属性 ..................................341