Acessibilidade
Mobile
UX
Inclusao
Usabilidade

移动应用程序的辅助功能 - 完整的实践指南

谈论可访问性很容易。在实际应用程序中实现可访问性,由于期限紧迫、技术债务和复杂的设计,则是另一回事。

移动应用程序的辅助功能 - 完整的实践指南

谈论[无障碍11]很容易。在实际应用程序中实现可访问性,由于期限紧迫、技术债务和复杂的设计,则是另一回事。

本“实践”指南主要针对需要亲自动手的移动开发人员(Android/iOS/Flutter/React Native)和设计师。让我们跳过原理,直接进入实施工作流程

移动辅助功能“生存工具包”

在编写代码之前,您需要合适的测试工具。没有它们,你就是在黑暗中编程。

  1. 辅助功能扫描仪:Play 商店中提供的 Google 应用程序。它会截取屏幕截图并提出修正建议(增加文本、对比度、触摸区域)。
  2. VoiceOver (iOS) / TalkBack (Android):学习基本手势。
    • 向右滑动:下一项。
    • 向左滑动:上一个项目。
    • 双击:激活/单击。
  3. 色盲模拟器:“Sim Daltonism”(Mac/iOS)等应用程序允许您查看应用程序屏幕,就像您患有不同类型的色盲一样。

实际实施清单

1.焦点顺序(遍历顺序)

屏幕阅读器从上到下、从左到右(西方语言)阅读屏幕。但复杂的布局可能会搞砸。

  • 问题:读者在主要内容之前阅读页脚。
  • 实用解决方案
    • Android:如果 XML 不符合视觉顺序,请使用 0 和 1 强制逻辑顺序。
    • iOS:调整视图控制器中的2 数组。

2.内容分组(Grouping)

想象一张产品卡:[运动鞋照片][名称:Nike Air][价格:R$500]。 如果读者分别关注每个项目,则用户必须“滑动”3次才能了解单个产品。这很累。

  • 实用解决方案:对容器进行分组。
    • Flutter:将 Card Widget 包裹在 3 中并隐藏语义子项 (4)。因此,焦点集中在整张卡上。

3.动态字体(Dynamic Type)

该用户在手机设置中加大了字体,因为他有老花眼(视力疲劳)。你的应用程序尊重这一点还是破坏了一切?

  • 练习:切勿以固定像素 (px) 设置字体大小。
    • Android:使用5(与比例无关的像素)。
    • iOS:使用动态字体 (6)。
    • React Native:避免在重要文本中限制 7。如果字体增大,请让文本换行。

4.颜色和对比度(深色模式)

无障碍还涉及视觉舒适度。

  • 练习:在深色模式和浅色模式下测试您的应用程序。如果您不使用系统语义颜色(例如 iOS 上的 8 )而不是硬编码的十六进制颜色,在白色背景上看起来很漂亮的浅灰色文本可能会在黑色背景上消失。

5. 触摸目标

按钮看起来很大,但只有中间的24px图标可以点击。

  • 练习:使用Android开发者选项中的“调试绘制”或“显示布局边界”工具来查看可点击框的实际大小。如果小于 48dp,请增加组件的内部内边距。

无障碍开发流程 (DoD)

为了确保[可访问性12]在实践中发生,请将这些项目包含在每项任务的“完成定义”中:

  1. [ ]所有交互元素都有标签吗?
  2. 我是否仅使用键盘/屏幕阅读器浏览整个功能?
  3. 色彩对比度是否通过WCAG AA测试?
  4. 如果我们增加系统字体,布局是否会调整(滚动)或剪切文本?

WebView 中的可访问性(小心!)

许多应用程序都是混合的,并在其中加载网页。

  • 危险:如果做得不好,手机的本机[辅助功能13(TalkBack/VoiceOver)并不总是能够与 WebView 的 HTML 很好地通信。
  • 实践:如果使用 WebView,加载的网站必须可访问(语义 HTML、ARIA 标签)。本机应用程序无法神奇地“修复”不良 HTML。

结论

实践中的可及性与英雄主义无关,而与习惯有关。每当你添加10时,它都会产生添加9的肌肉反射。习惯是在发送 Pull Request 之前先打开 TalkBack 2 分钟进行测试。

日常的小行动创造出强大的产品。从今天开始,在下一个屏幕上编码。

另请阅读

  • [移动应用程序的辅助功能 - 完整的日常指南14
  • [移动应用程序的辅助功能15
  • [移动应用程序中的辅助功能 - 带示例的完整指南16
  • [数字无障碍用户体验17
  • [数字辅助用户体验 - 扩展完整指南18
  • [数字无障碍用户体验 - 初创公司完整指南19