作为应用程序设计者,一些开发者在开发过程中往往会忽略一些用户体验问题,从而导致应用程序的用户体验不佳。在本期Android开发者FAQ中,我们整理了一些开发者在后台留言的关于UI和API用户体验的问题,并为大家带来了UI和API优化指南。Q:用户说我的应用在处理信息的时候不清楚,总是误以为程序失去了响应。有什么好的方法可以改善吗?A:系统应该在合理的时间内给予适当的反馈,让用户及时了解系统状态。在UI方面,如果用户在执行一个操作后需要等待一段时间,那么这个时候,系统应该告知用户操作的进度。与加载图标相比,我们建议开发者使用进度条,并在其上显示上传或下载的百分比。这样,用户就可以知道自己在等什么,还要等多久。△告知用户操作的完成进度在API端,API应该提供查询当前进度的方法。例如:开发者可以使用AnimatedVectorDrawable类来检查动画是否运行:booleanisAnimationRunning=avd.isRunning();API可以通过回调机制提供反馈:当对象的状态发生变化时,API用户会收到通知——有点类似于动画开始和结束时的Push通知。AnimatedVectorDrawable对象允许通过注册AnimationCallback函数来实现上述目的。Q:“撤消”操作越来越流行。这种功能有什么意义呢?如何在我的应用程序中添加类似的功能?A:赋予用户撤回操作的权利,会让你的应用更加友好易用。在UI方面,有时用户操作可能是模糊的,例如删除和归档电子邮件。此时,系统应弹出消息确认操作并提供召回选项。△允许用户撤回某些操作,API应该允许用户“放弃”和“重置”操作,使API能够恢复到正常状态。比如Retrofit中的Call#cancel可以取消一个已经发送的网络调用请求或者保证调用永远不会被执行(前提是在使用Call#cancel之前还没有执行过)。使用NotificationManagerAPI,开发人员可以创建和取消消息通知。问:一些用户反映我的应用程序与其他产品“不同”,一些按钮和手势没有执行他们预期的功能。我在哪里可以找到其他开发人员如何设置这些东西?A:一个好的应用程序不应该让用户因为不同的措辞、情况和行为是否指的是同一件事而烦恼。用户在使用您的应用程序之前体验过许多其他应用程序,因此他们希望通用交互元素在应用程序之间保持一致。一旦脱离常规,就很容易出错。因此,开发者需要保持与平台的一致性,使用用户熟悉的UI控件,保证用户能够快速识别和使用。此外,开发者自己的应用也需要保持一致性:在多屏操作应用时,使用相同的文字和图标来表示相同的操作。例如,保持编辑图标一致,以便用户可以在应用程序中编辑多个元素。△对话框要与平台统一。对于API,所有的设计都应该保持一致,比如方法命名要保持一致;方法内容必须相同,名称必须相同;方法中参数的顺序也要保持一致,等等。Q:我觉得很多操作的额外弹窗提示可能会让一些用户感到厌烦,那么怎样的设计才能在不打扰用户和可靠之间找到平衡点呢?A:从一开始就防止用户在使用中“犯错误”的发生是开发者应该遵循的原则。在很多情况下,用户无法专注于手头的任务,因此开发者应该以正确的方式引导他们,以防止用户在不知不觉中犯下无法挽回的错误。例如,在进行删除等破坏性操作或设置良好的默认值之前获得用户同意。例如,Google相册添加了一个确认对话框,以防止用户不小心删除相册。还有收件箱的闹钟功能(让邮件小睡一下),可以一键设置,让邮件在一定时间后重新出现。△在进行破坏性行为之前,GooglePhoto会先要求用户确认。收件箱一键设置时间,让邮件小憩。API应该正确地引导用户通过API,在需要的地方使用默认值。API应该简单易用。开发人员可以通过提供默认值来帮助用户使用API。比如创建Room数据库时,其中一个默认值保证数据库版本升级时数据量不变。这意味着基于Room开发的应用程序的可用性大大增强,因为数据不会丢失,数据库版本也是透明的。Room中的另一个方法fallbackToDestructiveMigration可以改变这种行为:在没有提供数据迁移的情况下,该方法可以在数据库版本发生变化后销毁并重建数据库。Q:越来越多的操作符号已经在用户心目中形成了固有印象。我应该顺应潮流使用这些东西,还是用一些创新的元素来装饰我的应用程序?A:识别熟悉的物体导致认知负荷高,容易被场景触发;“回忆”需要受试者从记忆中追溯细节,这需要更长的时间。因此,选择您喜欢的选项比从记忆中“读取”它们要容易得多。就UI设计而言,“识别”派的交互界面多采用用户熟悉的图标,而“记忆”派擅长命令行。信息和功能应尽可能直观、直观和易于访问。△比如用铅笔图标表示编辑功能,即使app不同,用户也能轻松识别。这种已经被广泛接受的图标最好不要自己设计。Q:我的app功能很多,但是有的用户说我的app功能丰富,喜欢尝试里面的各种功能,有的跟我说我的app看着很眼花缭乱,不知如何是好使用它,有什么意义?有解决办法吗?答:应用程序用户可能是经验丰富的老手,也可能是没有经验的新手。因此,在设计UI时,应兼顾这两种情况,让他们逐渐熟悉App的操作。据统计,App中只有20%的功能被使用到80%,这就需要开发者在“界面简洁”和“功能强大”之间取得平衡。在您的应用程序中找到20%的常用功能,并使它们尽可能简单易用。在设计过程中应用“渐进公开原则”,允许其余用户访问下拉页面上的高级功能选项。△比如在Android系统中,基本选项显示在Wi-Fi设置主页面,高级选项出现在下拉,可以满足不同用户的需求。问:屏蔽不相关的信息似乎可以提高用户的注意力。有什么方法可以加强这个?A:UI设计要简单,只包含与用户相关的信息。不相关或几乎不使用的信息应该被删除或转移到其他屏幕,以避免分散用户注意力或削弱重要信息。△PocketCasts的手机应用程序采用极简设计。比如上图中播客app的节目列表界面,只显示最精准有用的信息:如果用户无法下载节目,界面会显示下载文件大小和下载按钮;如果用户已完成下载,则显示节目长度和播放按钮。同时,上述所有内容及其他信息都会在详情页展示,满足好奇用户的需求。API用户只有一个目的:使用API更快地解决问题。所以让你的API快、准、狠,用最少的时间,最有效的方法解决用户痛点。所以,请不要暴露API的内部逻辑,API自己做,不要麻烦用户自己做。API:从22.1.0版本开始,AndroidSupportLibrary提供了RecyclerView扩展包,可以让开发者更好的设计具有大数据集和易变数据的U??I界面元素。如果列表发生变化,开发者需要更新RecyclerView.Adapter中的相关数据。这意味着需要开发者自行解决不同列表之间的差异操作问题。从25.1.0开始,支持库引入了DiffUtil来帮助开发者避免这种繁琐的工作。DiffUtil使用优化的算法来减少开发人员编写的代码量,同时提高性能。Q:现在这个时代,帮助文档还有必要吗?我的应用程序看起来像古董吗?答:用户应该能够在没有文档帮助的情况下使用您的应用程序。然而,对于高度复杂或领域专业知识的应用程序,这可能有点不现实。如果您必须编写文档,请确保它涵盖所有常见问题并且易于查找。△导航侧边栏底部常见的“帮助”和“反馈”选项API应该是“自文档化”的。如果方法、类和成员命名得当,API就好像编写了自己的文档一样。但无论API多么出色,文档都是必不可少的。这就是为什么所有公共内容——方法、类、字段、参数——都应该有相应的文档。API消费者应该像API开发人员一样发现API。以上就是今年最后一期FAQ的全部内容。我希望在阅读这些答案后,您可以使用这些方法来调整您的应用程序,使其在UI和API级别更易于使用。【本文为栏目组织《GoogleDevelopers》原创稿件,转载请联系原作者(微信公众号:Google_Developers)】点此查看更多本作者好文
