第18章 与用户交互相关的设计模式(中)

注意事项和批评

虽然操作栏(Action Bar)是很常用的设计模式,但它也不是完美无缺的。当我们想要使用它的时候,有些东西我们还是要考虑一下的。


触手不一定可及

操作栏(Action Bar)一般包含很多比较重要的功能,它又位于屏幕的最上方,但是随着发屏,手机屏幕是越来越大了,用户已经很难单手去操作手机了,更别说单手碰到屏幕的最上方了(吐槽:完全同意作者说的,最近换了小米2A,2A的桌面直接删除程序设计真心垃圾,单手删除时很痛苦,而且是要拖拉到屏幕最上方才能删除。也许苹果只变长不变宽是有道理的,变太宽了你单手握不住啊。)。


浪费屏幕空间和隐藏

操作栏(Action Bar)的另一个问题是历来都存在的。有的APP需要全屏显示内容,所以没有多余的空间来放操作栏。像视频播放器和阅读软件都是很好的例子。操作栏(Action Bar)都隐藏着的,直到用户点击屏幕使它变为可见状态。尽管这样的交互方式已经很常见了,但它还是会产生一些问题。


基于图标的操作

操作栏(Action Bar)上的操作大部分时间都与图标相关联。尤其是在触摸屏幕上,但是很多时候那些图标不够直观。当你的图标不够直观,又没提供悬停在图标上获取帮助信息功能的时候,也许用户会问题你的女性亲属(最后这句是我加的。。。)。


谷歌提供了长按操作栏图标显示提示的功能(如图18-6)。尽管这样可以帮助到一些用户,但是大部分人并不知道这个功能(我做开发的也不知道,艹。。。)。因此你不应该依赖这个来提示用户,但你最好还是为你的操作栏(Action Bar)提供这个功能。因为时间久了,就会有更多的用户知道这个功能。不管怎样,最重要的是让你的用户能直观的知道你的操作栏图标是啥功能。

其它的操作栏模式

接下来会讲到几个基于标准操作栏模式的变种。它们都是比较常见的。


分离式操作栏

有限的屏幕空间和触手不可及(屏幕太大)的问题使得分离式操作栏(Split Action Bar)概念的产生。分离式操作栏就是在屏幕的底部多增加一个操作栏。而底部增加的操作栏又分好几种形式。像顶部操作栏位置不够的时候,就把一些操作移到底部操作栏,这样底部操作栏就作为顶部操作栏一个扩展部分。作为扩展的话就会将之前显示于顶部操作栏右边的溢出菜单移到底部操作栏。


另一种方式只将图标放在顶部,其他的操作都移到底部。这样就解决了单手操作困难问题,但是破坏了系统的一致性。如图18-7就是一个将操作完全移到底部的例子。




分离式操作栏在适配在手机转动屏幕的时候需要保证良好的适配效果。横屏的时候需要将分离到底部的操作移回顶部变为传统的顶部操作栏模式(这个应该很好理解,因为横屏后屏幕变宽了,有更多的空间)。


上下文操作栏模式

在有的页面中,用户不仅可以执行操作,还可以操纵一些条目。在这样情况下,所谓的上下文操作栏就显示有必要了。当用户操纵一个条目的时候,操作栏上会显示相关的操作。具体的操作模式会在章节后面的快速操作设计模式的部分讲到。

哪些操作应该直接显示?

因为空间有限,因此你需要仔细考虑哪些操作直接显示在操作栏上,哪些移到溢出操作菜单里。


最优先显示的是连接页面上下文和最常用的操作。比如邮件编辑页面的发送按钮。其次是那些最常用的,但不是一定是跟上下文有关的。比如在一个邮件应用中,横屏的时候应该将编辑操作显示在操作栏上。


自适应操作栏

不同的手机,不同的平板,不同的屏幕朝向,就意味着不同的屏幕大小。而对于不同的屏幕大小,你应用的操作栏都应该能很好的适配。为了能较好的适配,你应该将那些重要的操作分为三类:

1.总是直接显示在操作栏上的

2.屏幕空间足够的时候显示在操作栏上的

3.永远不直接显示在操作栏上的


对于大多数的操作在空间足够的时候都应该显示出来。对于那些确实很少用的操作,比如设置就可以不用直接显示在操作栏上。


具体技术实现

自从操作栏成为固定的设计模式后,在实现上的支持还是很给力的。它是少数加入安卓核心SDK的复杂组件之一。


SDK

安卓3.0蜂巢(Honeycomb)的时候,安卓SDK开始支持操作栏(Action Bar),从4.0冰激凌三明治(Ice Cream Sandwich)开始,手机也开始支持。


如果你的APP的最低可用平台是3.0以上的,你可以很简单的直接使用SDK。它提供了很多立刻就能使用的功能。它可以自动适配大屏幕,而且也可以根据你的设置在横屏的时候直接显示哪些操作。它也提供了长按显示提示信息功能和为APP图标添加向上导航功能。


你可以通过查看安卓文档了解SDK提供的操作栏的完整说明和指南,地址是:http://developer.android.com/guide/topics/ui/actionbar.html 。



ActionBarSherlock

如果你的应用需要支持旧版本的(低于3.0的)系统,可以通过一个非常好的第三方开源库来实现操作栏。这个库叫着ActionBarSherlock,由JakeWharton 维护。通过这个库可以在2.1及以上版本的系统实现操作栏。这个库的实现非常完美,所有的方法和参数同安卓SDK提供的API完全一样。这意味着你不需要重新学习使用ActionBarSherlock库。当检测到系统有提供操作栏API的时候,这个库会自动切换使用系统提供的(就是当你的系统版本是3.0以上的,即使你使用了ActionBarSherlock它的底层会自动使用系统提供的操作栏)。


可以在ActionBarSherlock的官网下载和阅读使用文档:http://actionbarsherlock.com/ 。


主题

创建操作栏主题有一系列的参数需要设置。你可以用纯颜色或图片来做背景。用图片做背景的话最好用9-patch图片(你懂的)。


绘制所有需要的资源文件是很漫长的过程。这里有个工具可以使一切都变得简单。例如,你可以通过Jeff Gilfelt 创建的操作栏样式生成器网站来生成所有基于数值颜色值的图片。这个网站同样可以生成你需要的XML文件。网址为:http://jgilfelt.github.com/android-actionbarstylegenerator/


此章未完待续。。。。。。

更多相关文章

  1. 作为Android开发者 你真的知道app从启动到主页显示的过程吗?
  2. android SoftKeypad 软键盘的问题
  3. 关于在Android上编写《热血传奇》的妄想
  4. android 系统隐藏和显示虚拟按键的几种方法(不要太详细了)
  5. Android状态栏右侧添加图标并控制其显示状态
  6. android高分段进阶攻略(4)android模拟点击
  7. 第三部分:Android(安卓)应用程序接口指南---第三节:应用程序资源--
  8. android主要类解析 Activity ,Intent ,IntentReceiver,Service ,
  9. Android小应用——监控屏幕使用时间

随机推荐

  1. Python正则表达式快速学习
  2. Linux文件系统详解
  3. Docker框架的使用系列教程(二)
  4. 如何上传项目到GitHub
  5. Linux 自带神器 logrotate 详解
  6. Python操作SQLite数据库
  7. 企业架构中的坑:你是否搞混了“服务”?
  8. 手把手教Linux驱动9-等待队列waitq
  9. Linux设备驱动之Ioctl控制
  10. DM9000驱动移植在mini2440(linux2.6.29)