个人总结的android开发中部分设计原则,很多也是从web开发中总结出来的。
包括:保持用户操作的流畅性(减少activity的切换、减少用户等待)、别让用户操作太多、别以为用户知道很多、减少设置、其他细节。还有很多没能写进来,欢迎交流
首先推荐一个关于产品设计的网站 产品设计-互联网的那点事
1、保持用户操作的流畅性
在web操作中,要尽量少的让用户在多个页面之间进行跳转,这点应该不少web开发人员都能明白。因为用户习惯在一个页面操作,页面的跳转会打断用户操作的流畅性
在android应用中保持用户操作的流畅性同样重要
1.1 减少activity的切换
activity切换后需要不断的back才能返回,也让用户失去了之前activity界面上的数据
个人的一些方案:
a. 用非模态对话框代替模态对话框,避免干扰用户当前的行为,可参考Android PopupWindow介绍及实现菜单效果
b. 某些activity用浮动activity代替(这篇博客在草稿箱好久了,等补充好再加个链接)
1.2 减少用户等待,不要打断用户当前的行为
在应用使用过程中不可避免的会涉及到一些比较耗时的操作,比如网络请求数据、图片渲染。对于这些情况我们要尽量减少用户的等待时间,要知道用户的耐心是不能用来考验的。
个人的一些方案:
a. 缓存 这个说的不是大型网站的缓存,仅仅是用一个小小的map就能达到的不一样的用户体验
对于经常操作或是刚刚访问的部分数据可以进行缓存,节省再次获取数据的消耗。
比如:新浪微博客户端用户头像的存储。
团购网站客户端缓存用户已经查看过的n条数据保存,用户回头查看可以直接存缓存中获取
b. 预取机制 由于国内手机联网速度的限制,应该有90%多的用户仍然是2g网络,对于网络操作较多的应用需要有预取机制,防止每次联网用户都需要等待内容获取。
比如:一个在线电子书应用,若是等到用户翻页时再去发送http请求获取该页内容,哪怕是有提示框,也会给用户及不好的体验,用户翻页这个操作是在是太频繁了,这个是时候就需要提前预取。
更多举例:用户查看当页时,可以开启线程同时预取n页缓存,查看下一页时再预取到n+1页,即始终保持前n页可用,使得用户感受不到获取的时间,而始终提前n也的流量消耗并不会很大。
参考应用:对于以上两个原则可以参考google reader应用,它获取rss文章的方式就能让用户感受不到获取的时间消耗。,有需要可以试试自动获取新数据的缓存AutoGetDataCache。
c. 异步操作
这个对于较耗时的操作可以使用,像现在淘宝首页的显示,各个模块之间互相不影响加载
比如:花瓣应用的图片加载方式,微博客户端用户头像的加载方式
这个的代码也在整理之中,欠了好多博客了
d. 后台线程
如果实在上面的都不合适用来解决的话,试试后台线程来运行需要较长时间的操作,并加上友好提示
2、别让用户操作太多
这个原则是在不好解释,用3这个神奇的数字表示下吧,即用户的任何操作不需要3步以上完成
只能说开发者自己要是个很好的体验师,并且能经常找不同的用户体验并进行反馈。不能按照自己调试的顺序点点按按把功能完成了
3、别以为用户知道很多
一些好的功能没法给用户展示的话,就给一些类似导航的功能提示,但这个提示同样不要太长,以3为界
现在很多应用都有这种提示了,像腾讯微博、淘宝客户端
4、减少设置
这个其实对用户影响不是特别大,但我想对应用开发者是个提醒
90%的用户看都不看应用的设置,你想想自己看过自己手机里多少应用的设置,很多你觉得需要花了好几天开发的设置根本没必要,希望开发者在增加某个设置的时候想想真的有必要吗,这能为你节省很多时间
参考应用:Aldiko,它的设置相对很多阅读器来说就简单至极
其他小细节
a、用滑动代替点击
这点现在在ipad上已经很好的验证了
b、让用户手指不动,消除屏幕盲点
虽然我也知道这对手指健康不利,但是现在的大屏手机,很多应用按钮放置的位置跨度之大是在是让人蛋疼。用户可操作的范围大概只有屏幕的2/3,屏幕上方很多位置操作起来过于麻烦
自己正在整理这方面的文章。。
参考:触屏手机点击区域的小秘密
c、处理屏幕方向改变时重绘activity
d、back键尽量让用户回到之前一样的场景
如listview的位置不变,仍然是用户之前操作的位置。输入框仍然保存之前用户输入的内容