迁移到 www.trinea.cn @Android @Java @性能优化 @开源,滴滴国际化项目 Android 端演进

Android开发中部分设计原则及解决方案

个人总结的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文章的方式就能让用户感受不到获取的时间消耗。

自己也写了个小型的缓存程序可以很方便调用,向前向后或是同时进行双向缓存,等手头工作忙完,写篇博客介绍下。

 

c. 异步操作

这个对于较耗时的操作可以使用,像现在淘宝首页的显示,各个模块之间互相不影响加载

比如:花瓣应用的图片加载方式,微博客户端用户头像的加载方式

这个的代码也在整理之中,欠了好多博客了

 

d. 后台线程

如果实在上面的都不合适用来解决的话,试试后台线程来运行需要较长时间的操作,并加上友好提示

 

2、别让用户操作太多

这个原则是在不好解释,用3这个神奇的数字表示下吧,即用户的任何操作不需要3步以上完成

只能说开发者自己要是个很好的体验师,并且能经常找不同的用户体验并进行反馈。不能按照自己调试的顺序点点按按把功能完成了

 

3、别以为用户知道很多

一些好的功能没法给用户展示的话,就给一些类似导航的功能提示,但这个提示同样不要太长,以3为界

现在很多应用都有这种提示了,像腾讯微博、淘宝客户端

 

4、减少设置

这个其实对用户影响不是特别大,但我想对应用开发者是个提醒

90%的用户看都不看应用的设置,你想想自己看过自己手机里多少应用的设置,很多你觉得需要花了好几天开发的设置根本没必要,希望开发者在增加某个设置的时候想想真的有必要吗,这能为你节省很多时间

 

参考应用:Aldiko,它的设置相对很多阅读器来说就简单至极

 

其他小细节

a、用滑动代替点击

这点现在在ipad上已经很好的验证了

方案:Android 滑动切换页面 以及屏幕手势

 

b、让用户手指不动,消除屏幕盲点

虽然我也知道这对手指健康不利,但是现在的大屏手机,很多应用按钮放置的位置跨度之大是在是让人蛋疼。用户可操作的范围大概只有屏幕的2/3,屏幕上方很多位置操作起来过于麻烦

 

自己正在整理这方面的文章。。

参考:触屏手机点击区域的小秘密

 

c、处理屏幕方向改变时重绘activity

方案:解决屏幕方向改变Activity销毁重建问题

 

d、back键尽量让用户回到之前一样的场景

如listview的位置不变,仍然是用户之前操作的位置。输入框仍然保存之前用户输入的内容

 




已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐



posted @ 2012-04-01 00:26  Trinea  阅读(356)  评论(0编辑  收藏  举报