看了锤子的发布会,我呼吁开发者对残障人士依赖的辅助模式友好一点!


正文共: 2721字 5图

预计阅读时间: 7分钟

一、前言

昨天(你看的时候应该是前天),老罗在锤子秋季发布会上发布了 坚果Pro2,非常惊艳的一款手机。除了 工业ID 设计惊艳之外,Smartisan OS 里的无障碍模式功能,也让我感触颇深。

在此之前,我确实不太在意这种辅助模式的效果,看了知名残障人士蔡聪的演示视频,我觉得是时候了解一下如何让视障人士能更好的使用我们开发的 App 了,也许改动并不那么大。

还没看过的可以先看看视频:

二、让你的 App 更易于使用

你开发的 App,应该是适用于所有人的,只要他真的想用,当然也是包括残障人士的。

对于影响使用的常见障碍,包括失明或低视力、色盲、耳聋或听力受损、活动能力受限等。如果你在开发的时候,考虑到这些问题,你就能做到更好的用户体验,让它们对残障人士更亲和友好。

在大多数情况下,让你的 App 更易于使用并不需要你做太多的适配工作。相反你只需要在编写代码的时候,养成一个好习惯,做一些细微的调整,就可以达到易于使用的标准。

2.1 开启 TalkBack

在老罗发布会上,蔡聪作为一个视障人士,演示的操作,主要是基于 TalkBack 这个功能。基本上我能找到的所有手机,都是有这个功能的,算是一个手机的行业标配。

你如果需要开启它,可以在设置里找到它。

从说明上,也可以看到,当你开启 TalkBack 的时候,它会通过语音辅助盲人或者视觉障碍人士使用 Android 设备。

当你尝试开启它的时候,会有一个提示,告诉你它能做什么。

正常开启之后,它在屏幕上实现焦点态的功能,让所有可选的"块",都可视选中,然后此时会进行语音播报,告诉你当前选择的项是什么。

可以通过左右滑动来进行下一个选择,也可以尝试点击选中。最终想要选中点击,可以双击屏幕,它等于对当前焦点指定的块,做了一个点击操作。如果有列表,还可以通过双指滚动列表。

我大概尝试了五分钟开启 TalkBack 功能,很多 App 适配的并不好,确实如视频里演示的,经常有一些无法识别的控件块,提示『未加标签』。我想如果我是视障人士,我现在应该是无奈的。

2.2 标记 UI 控件

前面也提到了,开启辅助模式之后,TalkBack 会有一个焦点选中态的效果,然后提取当前焦点选中控件的描述,然后进行语音提示即可。

所以我们在开发过程中,为大部分控件做正确切有意义的解释,是非常重要的。

对控件加有意义的标签解释,使用的方法和属性,取决于实际控件的类型,通常我们有如下建议。

  • 为例如 ImageView 和 ImageButton 等控件添加解释标签的时候,可以使用 android:contentDescription 在 layout-xml 中进行属性设定,还可以使用 setContentDescription() 在代码中对其进行设定。

  • 而对于一些纯装饰的控件元素,它们并没有实际意义,应该将 android:contentDescription 这个属性,设置为 "@null"。据说 Android 4.1(Api Level 16) 上,还可以通过 android:isImportantForAccessibility 属性,将其设置为 "no" 即可。

  • 对于可输入的元素,例如 EditText 控件而言,可以通过 android:hint 或者 setHint() 为其设置一个提示语。

  • 在 Android 4.2(Api Level 17)以上,还可以为一些控件设置一个附属属性,表示该控件的描述可以从另外一个控件上提取。可以使用 android:labelFor 进行设置,算是一种共享描述的方式吧。

不过大多数情况下,辅助功能的服务,会自动获取 TextView 对象中 android:text 属性设置的值。所以对此我们不需要做额外的处理,其实已经节约了很多工作量了。

下面举个官网的例子,为一个 ImageButton 增加一个设定一个解释标签,使用的是前面介绍的 android:contentDescription

<ImageButton
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_alignParentLeft="true"
  android:layout_alignParentStart="true"
  android:contentDescription="@string/share"
  android:src="@drawable/ic_share" />

2.3 想做的更好你需要做的跟多

对于上面介绍的一些技巧,对于大多数 App 来说已经够用了。如果你开发的 App 内有自定义控件,辅助功能是无法支持的,这个时候,你需要用的 AccessibilityEvent 和 AccessibilityNodeInfo 这两个类,这些有时间再细细的讲解。

下面总结一些常规的设计建议,可能不全,但是是我觉得有用的。

1、易于追踪的导航

在设计 App 的时候,应该遵循导航规范提供便捷的导航方式:

  1. 确保用户可以通过导航手势浏览引用程序的布局。

  2. 避免有可操作的 UI 在一段时间内淡入淡出后消失。

  3. 对于仅用于一个功能的复杂布局(包含多个控件),用户开启辅助点击的时候,应该只为期响应主要的语音提示。

2、让触摸区域更大

很多视障人士,并不是完全看不见,可能只是看不清楚。所以对一些视觉上比较小比较精致的控件,点击会有障碍。这个时候,放大控件的触摸点击区域,是有必要的。

如果空间允许,可以尝试最简单的使用增加 padding 的方式,来增大点击区域,极端情况下,还可以使用 TouchDelegate 这个 Api 来增加目标的触摸区域。

3、提供足够的色彩对比

这个没什么好说的,更锐利、色彩对比度更强的界面,看起来会更清晰,下面放一张官方文档里的截图,相信你就清楚了。

三、结语

当然,优化是没有终点的。还有一些更好的优化方案,实际上代价还是很大的,在现在这个迭代非常迅速的时代,太费工期又不见收益的事情,实际上是很难强行推下去的。

所以今天就聊这么多,希望各位开发者在力所能及的情况下,尽可能让你开发的 App 对残障人士更友好一点。

今天在承香墨影公众号的后台,回复『成长』。我会送你一些我整理的学习资料,包含:Android反编译、算法、设计模式、Web项目源码。

推荐阅读:

目前5000+人已关注加入我们


听说喜欢留言的人,运气都不会太差~

点击『阅读原文』查看更多精彩内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值