`

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文章的方式就能让用户感受不到获取的时间消耗。,有需要可以试试自动获取新数据的缓存AutoGetDataCache

 

c. 异步操作

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

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

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

 

d. 后台线程

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

 

2、别让用户操作太多

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

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

 

3、别以为用户知道很多

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

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

 

4、减少设置

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

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

 

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

 

其他小细节

a、用滑动代替点击

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 


分享到:
评论

相关推荐

    Android异步加载解决方案

    在介绍Android开发过程中,异步处理这个常见的技术问题之前,我们简单回顾下Android开发过程中需要注意的几个地方。 Android应用开发过程中必须遵循单线程模型(SingleThreadModel)的原则。因为Android的UI操作并不是...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...

    [Android项目视频教程]通讯录的开发源码视频讲解

    在数据存储方面,Android提供了SQLite数据库作为本地存储解决方案。开发者可以利用SQLite来存储联系人的信息,包括姓名、电话、邮箱、地址等。同时,为了保证数据的安全性和完整性,还需要对数据进行加密和备份处理...

    软件系统整体设计方案.docx

    设计原则 快速响应:快速发布、快速响应业务变化 方便扩展:响应新业务无需推倒重来 稳定运行: 通过弹性伸缩和便捷的容灾恢复来保障稳定性(参考阿里云解决方案) 高效运维:提高运维效率、减少运维成本 演进规划 --...

    嵌入式系统/ARM技术中的基于Android平台的多分辨率解决方案

    摘 要:近年来,智能手机的功能...文章首先介绍Android 的系统架构,然后介绍Android 平台中分辨率的相关术语,之后重点讲述在开发过程中如何部署资源以及所应遵循的原则,最后给出测试多分辨率兼容性的方法。  0

    基于Android平台的多分辨率解决方案

    摘 要:近年来,智能手机的功能...文章首先介绍Android 的系统架构,然后介绍Android 平台中分辨率的相关术语,之后重点讲述在开发过程中如何部署资源以及所应遵循的原则,给出测试多分辨率兼容性的方法。  0 引 言

    Android多点触摸遥控系统的研究与实现

    针对现有操作系统和交互方式提出了以Android OS和触摸板为核心的系统解决方案,介绍了软硬件平台的搭建过程,将整个系统分为硬件层、数据接入层、驱动层、框架层、应用层及用户层六个层次,根据定义的核心手势和任务...

    Android项目源码开源的 Material Design 豆瓣客户端.zip

    而豆芽解决方案则是使用 EventBus,在请求完成后通知所有界面刷新同一数据。 界面动画 Android 5.0 以上提供了 SharedElementTransition,然而默认情况下共享的界面元素在动画时却会被放置在其他界面元素之上,...

    iMe-Android:iMe Messenger-是基于Telegram开源开发并使用Telegram API的非官方客户端

    Telegram提供了使用其和实施全新解决方案的机会。 iMe团队在不破坏用户隐私和违反安全原则的情况下,在Messenger中开发并添加了新功能,从而享受Telegram提供的好处。 特征 内部开发和集成: iMe钱包和内部AiCoin ...

    SimpleAndroidArchitecture:该项目旨在促进 Android 的架构对话

    robobinding 的演示模型)承担大部分重量并保持活动和片段轻量级具有React式示例,包括一些测试示例包括的库有 - Roboguice、Robobinding、Robolectric、Retrofit、Mockito 等##目标启动对话,寻找 Android 中常见...

    网狐荣耀版开发使用常见问题解答

    十一、网狐荣耀版vs生成解决方案时出现“出现未能写入日志,请求的操作无法在使用用户映射区域打开的文件上执行“错误 一、定位文件,看是不是只读。 二、删除文件试一下,看看是不是文件被占用,如果删除不了,...

    java8stream源码-mvvmArch:MVVM架构演示。Lifecycle+Retrofit+Room可以快速构建项目

    作为一枚多年的安卓研发,有必要学习或了解下这些优秀的解决方案,领略那些行业开创者的思想魅力,然后转化为自己的技术技能,争取应用到日常的开发中去,提高自己研发水平。 Lifecycle+Retrofit+Room 云端漫步飞...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7...

    Dagger:适用于Android和Java的快速依赖注入器-开源

    Dagger旨在解决困扰基于反射的解决方案的许多开发和性能问题。 Dagger替代了FactoryFactory类,该类实现了依赖注入设计模式,而没有编写样板的负担。 它使您可以专注于有趣的课程。 声明依赖关系,指定如何满足依赖...

    拉梅舒帕达耶

    (HTML5,CSS3,Saas,Bootstrap,JavaScript,PHP,MySQL) MEAN / MERN堆栈开发 (React,TypeScript,ES6,Angular,NodeJS,MongoDb,Severless) 托管解决方案: GCP,cPanel,AWS,AWS Lamda,AWS Amplify,...

    近乎v5.0源码 Almostv50.rar

    源码版安装之前,请使用Vs2015或以上版本以管理与身份打开项目, 您需要重新生成解决方案(管理员身份打开项目),安装版不需要重新生成解决方案 1.登录您的服务器,建立或者选择一个目录,将安装包./web 目录中的...

    AdViewerApp:可用于查看广告的简单应用程序

    我的AdViewer应用程序是查看从远程JSON URL提取的广告的简单解决方案。 我将提要结构用于此应用程序,因为我认为这是浏览信息的有用且有效的方式。 这也是用户习惯的系统,它使用户在开始使用该应用程序后便立即...

    JAVA上百实例源码以及开源项目

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    2013-2014年中国企业移动信息化发展状况调研报告

    流通业对信息发布、流程控制等移动应用需求较强,亟待契合行业特点的解决方案出现,同时运维阶段需重点控制成本;制造业移动应用需求广泛,潜力巨大,但在实践移动信息化的过程中遇到的挑战较多。 政府很多部门都会...

    JAVA上百实例源码以及开源项目源代码

    Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...

Global site tag (gtag.js) - Google Analytics