第四部分 Android 用户界面设计模式

第17章 用户界面设计模式介绍

设计模式是用来解决常见问题的方案,每个设计模式都是经过了长期的验证与修改才被总结出来的。在你的生活或者工作中,你可能会一次次的遇到同样的问题。在很多情况下,你可能每次都使用同样的方式来解决你遇到的相同的问题。人们也常常将自己的解决问题的方式与他人分享。

设计模式提供了一些公式化方案来帮助设计者完成他们的工作任务。“四人帮”的《设计模式》一书是第一个将设计模式用在软件设计上的(据我所知设计模式最初是用在建筑上的)。如果你是个软件开发人员,你可能对这本书有些了解。

《设计模式》介绍了很多软件设计模式来解决我们在软件开发时的一些常见问题。现在这些模式在开发人员口中是很常听到的。你会听到他们在讨论软件架构和设计的时候可能会说到单例和工厂模式。这些设计模式不仅解决了他们的问题,同时它也是一个强大的交流工具。因为设计模式用的是通用的名字,所以开发人员可以用一两个词语就能说清一个复杂的解决方案。

用户界面(UserInterface)设计模式

用户界面(User Interface, 一般简称UI)设计没有编写代码或设计软件架构那么正式。但是在设计中仍会反复出现同样的设计问题。这尤其体现在你为小屏幕的手机设备设计软件的时候,因为手机对这些可用的解决方案有更多的限制。

在编写本书的时候,Google Play已经有超过500,000款APP----其中有很多在界面设计方面都很碉堡,但同时也有很多设计得对很垃圾。通过查看成千上万解决常见问题的方案,你可以很容易的知道那些方案是有用还是没用。通过研究别人的APP,你就可以知道不同UI设计模式的好坏。

为了设计而设计(Designing the design,你妹啊,我也不知道这个怎么翻译)

这本书的第一章说了用户的目的、使用情境和用户需要。接下来的章节就讨论了在知道用户的需求后我们可以用来创建用户界面的工具。UI设计模式这部分内容就是教你怎样组织系统组件来设计用户界面。利用设计模式,你可以很容易的根据用户需求来创建一个具体的界面。

记住UI设计不是一个具体的学科是有好处的,UI设计模式更像是解决问题的基础而不是一个完整立刻可用的解决方案。有些时候一些UI设计模式可以被直接使用,但是大部还是要根据实际的用户界面来调整。

设计模式使用时机

没有迫不得已的原因就不要使用设计模式。你不要头脑发热去解决一个不存在的问题。举个例子,被广泛使用的安卓侧边导航设计模式,它并不适用于所有的APP。例如一个APP的需求是显示下一个公交站台的信息,它也许就不需要侧边导航。如图17-1就是一个利用侧边导航的成功案例。第十九章会有更多关于侧边导航的内容。

Tip:不能解决你的问题的设计模式,你就不要用!即使有设计模式可以解决你的问题,你也不一定要用,因为也许你的APP不适合用那个设计模式。你打算将一个设计模式应用到你的APP中的时候,好好合计一下是比较明智的。

使用UI设计模式的好处

这里有许多已知的好处。

不要重复发明轮子

设计模式不是一下就出现的。它们都是经过了多次的改进。每个解决方案成为公认的设计模式之前都是经过了数以千计的设计者与开发人员的测试,也经过了成千上万的人使用。在很多的APP中可以发现它们使用了设计模式。技艺高超的设计者们不断地使用和优化某些解决方案。使用这些成熟的解决方案,好处是不言而喻的。你能以此打下坚实的基础。

平台一致性

坚实的基础不是使用UI设计模式的唯一好处。UI设计模式同样促进了安卓平台的一致性。因为用户知道操作栏(Action Bars)和侧边导航(SideNavigations)是干吗用的,因此他们不用单独学习使用你开发的APP。如果安卓平台上的APP能够全部或大部分保持一致性,即使界面比较复杂那也很容易使用。

支持的库和已有的组件

另外一个明显的好处就是它有丰富的支持库。一些设计模式正在寻找切入点来融入进安卓的核心库和谷歌的支持库。使用那些组件对质量比较有保障。但是核心库文件也有很多设计模式还没加入进去。幸运的是为了弥补了这个空白,出现了许多第三方支持库,并且他们之中有许多是开源的。使用经过测试并保持维护的第三方库比你自己建立一个要好得多(不要重复发明轮子)。不过请记得将你的更新提交到相应的社区!

Android设计指南里的设计模式

Android设计指南中列举了一些设计模式。你应该到安卓官网上去看看这些内容,具体网址是:http://developer.android.com/design/patterns/index.html。这本书里说的一些设计模式在网站上也有。当我讲到的网站上也有的设计模式时,我会给个链接给你。

Tip:那里有很多不好的设计。第21章涵盖了糟糕的UI设计内容来解释为什么不要那样做。这些常见的解决方案导致了糟糕的用户体验。我会解释他们为什么很糟糕,同时也会告诉你一个更好的替代方案。

本书中的UI设计模式

像之前所说的,设计模式就是解决常见问题的方法。整本书都是以问题引出设计模式的。对于每一个设计模式,都是先简单概述一下,然后描述具体问题。描述完问题后,我就阐述了有效的解决方案。那些解决方案其实就是设计模式,通常也会介绍一些实际APP作为例子。那些解决方案是对用户界面具体构成的抽象描述。尽管有时你很容易想到一个具体的实现方法,但是解决方案并不是直接告诉你具体如何去实现。对于UI设计模式这样的解决方案,它更像是一个开发目标。你的目标就是让用户界面像解决方案描述的那样运行。

手机、平板和响应式设计

通过响应式设计,让你的APP能够同时在小屏幕的手机和大屏幕的平板上正常运行是本书的重点主题之一。本书中的所有设计模式我都讲解了怎样在小屏幕和大屏幕的设备上使用。从小屏幕适配到大屏幕,有的设计模式可以不用修改,直接使用,但是有的需要调整,有的设计模式完全不行,只能废弃。

示例应用(EXAMPLE APPS)

这本书中的示例应用很好的诠释了所讲的设计模式应该怎样去实现。我建议你把我提到的那些APP下载回来体验一下。但是有的APP的设计在你阅读本书的时候可能已经不一样了,因为APP设计变化太快了。在所举的示例中,你同样可以找到很多别的APP也应用了一样的设计模式。

注意,我不鼓励你直接抄袭示例APP的设计。每个设计模式应该根据你的需求做调整;你的需求不太可能和示例APP是一样的吧。花点时间研究示例APP和你找到的别的APP,然后进行你自己的设计。

示例代码

对于一些设计模式,我给出了一些代码来帮助你理解,但是很多设计模式都没提供任何代码。因为这本书介绍的很多设计模式都有开源的库实现。我都会把地址链接写出来,通常它们都在github上,比起本书有限的描述,你可以在github上找到更好的例子。你在你的APP中应用这些开源库能让你爽到飞起来。许多开源库都是向后兼容的,所以老版本你也不用怕,而且使用开源库你也可以避免一些很难的安卓开发细节,那样菜鸟也能直接使用库来搞出超炫的开发。

设计模式的命名

设计模式的命名是很重要的。像我之前说的那样,一个出名的设计模式也是一个有力的交流工具。例如“我们应该在这个屏幕上使用操作栏(Action bar)吗?”可以不用解释什么是操作栏就能表达很多信息。使用标准命名能使设计人员之间沟通更有效。

这本书使用的术语都是在安卓设计群体中很普及的。许多设计模式有好几个名字,对于还没有很确定的名字的设计模式,我在描述的时候把几个名字都讲了。

另一个值得注意的是设计模式通常不使用实现技术的控件或类的名字命名。因为在安卓源码中,类名和包名有另一个比设计模式命名更重要的目的。一个设计模式的名称应该结合它所解决的问题。换句话来说,一个技术类的名称通常是描述它具有的功能。

UI设计模式分类

书的这部分将UI设计模式分成了三类,其中一章是糟糕的设计模式(叫着反模式)。分类比较松散,但是希望能帮你找到需要的设计。用户操作设计模式就是用户与APP交互的一些行为。布局和导航设计模式可以帮你解决界面布局和伸缩的问题。数据设计模式可以在组织你的数据并让用户理解它们的问题上帮到你。一些设计模式可能可以分成更多的类别。

总结

UI设计模式可以帮你将想法变成实际的APP。很可能你遇到的问题别的设计人员已经遭遇过并且搞定,所以使用那些被证明确实可行的解决方案是有意义的。但是,你始终都应该清楚地知道你所使用的方案确实在解决你的问题。不要跟风,觉得别人用了设计模式你就要用。

更多相关文章

  1. Android task和back stack详解四:intent中定义启动模式
  2. Android也架构之四:门面模式解析获取的html代码
  3. google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过
  4. 代码混淆—android被反编译的两种解决方案
  5. [android盈利模式探索]我也分享一下我Android的收入数据
  6. Android与.Net交互模拟用户屏幕操作添加APN和网络4G/3G切换
  7. Android View 高级框架二 Builder模式打造通用对话框

随机推荐

  1. Android自动解析html带图片,实现图文混排
  2. Android系列之如何成为Android编程高手第
  3. Motorola Droid 4 现踪迹,将支持 LTE 移动
  4. android屏幕适配计算方式及适配values文
  5. Dell Streak 5 从美国网站静静地消失了,呜
  6. [Android]如何做一个崩溃率少于千分之三
  7. Android(安卓)Activity背景半透明设置方
  8. 谣言易碎:诺基亚为何不能投靠Android阵营?
  9. Android(安卓)- ImageButton单击切换按钮
  10. [置顶] 我的Android进阶之旅------>Andro