借助 Material Design,帮助您打造更好的无障碍应用 (中篇)

news2024/12/27 14:32:47

随着时代的发展,"无障碍体验" 对开发者的意义也愈发重大,在上一篇文章中,我们为您介绍了辅助技术,层次结构,颜色和对比度等内容。本文将进一步为您介绍无障碍布局和排版、文案等相关的内容。

3b718c3b5d4be233268777dec4c1dbef.png

布局和排版

Material Design 的触摸目标指南可以帮助无法看到屏幕或难以处理较小的触摸目标的用户点按应用中的元素。

触摸目标和指针目标

1.1.1 触摸目标

触摸目标是屏幕上响应用户输入的部分。它们会超出元素的可视边界。例如,一个图标的大小看上去可能是 24 x 24dp,但加上它周围的内边距,构成的完整触摸目标大小是 48 x 48dp。

对于大多数平台,请考虑将触摸目标的大小至少设置为 48 x 48dp。不管屏幕尺寸如何,这一大小的触摸目标的实际尺寸都是大约 9 毫米。建议的触摸元素目标尺寸为 7 到 10 毫米。为充分考虑更广泛的用户群体,建议您使用较大的触摸目标。

请注意,在 iOS 上,建议的触摸目标尺寸是 44 x 44pt。如需获取特定平台实现指南,您可以访问开发者资源页面:

https://material.io/develop

1.1.2 指针目标

指针目标类似于触摸目标,但适用于使用运动追踪指针设备 (如鼠标或触控笔) 的情形。建议将指针目标至少设置为 44 x 44dp。

9278cb1411ee1347e203cac8979fa2d3.png

△ Android 目标尺寸为 48 x 48dp

头像: 40dp

图标: 24dp

头像和图标的触摸目标: 48dp

△ 触摸目标

1.1.3 触摸目标间距

大多数情况下,在触摸目标四周设置 8dp 或更大的分隔空间,有助于平衡信息密度和可用性。

64476477ae90084329338ed01b16a6c0.png

△ 触摸目标高度: 48dp

按钮高度: 36dp

△ 触摸目标和按钮

布局

1.2.1 响应式布局

灵活的响应式布局可帮助内容根据屏幕尺寸进行缩放。这有助于避免截断在特定设备类型上或在不同分辨率下可能无法完全显示的内容。

1.2.2 项目分组

可以将相关项目分到一组或放在邻近的位置,以提高可读性。

4780fb326a8dd0a1c9490e14d2610dcb.png

正确做法

滑块值与滑块控件紧邻。

注意

如果滑块值离滑块控件太远,请考虑移动滑块值。使用屏幕放大工具的用户如果不来回平移,可能无法同时查看滑块及相应值。

您可以参考以下内容,了解更多相关信息:

  • 像素密度

    https://m2.material.io/design/layout/pixel-density.html#pixel-density

  • 语言注意事项

    https://m2.material.io/design/typography/language-support.html#language-considerations

排版

1.3.1 字体

为了提高可读性,用户可能会放大字体。移动设备和浏览器包含允许用户在系统范围内调整字体大小的功能。如要在 Android 应用中启用系统字体大小,您可以将文字及其相关容器标记为以可缩放像素 (sp) 为单位进行测量。

确保有足够的空间容纳大号字体和外文字体。如需了解建议的外文字体大小,您可以参阅行高相关内容:

https://material.io/design/typography/language-support.html#language-considerations

4e5493abfd9fb7fbeb988767728ae292.png

文案

您可以查看相关博文,帮助您了解这部分内容:

https://medium.com/google-design/improving-comprehension-through-intuitive-actions-f7e6336e12e6

无障碍文本

无障碍文本是指屏幕阅读器无障碍软件使用的文本,例如 Google 在 Android 设备上推出的 TalkBack、Apple 在 iOS 设备上推出的 VoiceOver 以及 Freedom Scientific 在桌面设备上推出的 JAWS 等软件。屏幕阅读器会大声读出屏幕上的文本和元素 (例如按钮),包括可见和不可见的备用文本。

2.1.1 可见文本和不可见文本

无障碍文本包括可见文本 (包括界面元素的标签、按钮、链接和表单上的文本) 和不会显示在屏幕上的不可见说明 (例如图片的备用文本) 。有时,可以用无障碍文本替换屏幕上的标签,以向用户提供更多信息。

当可见文本和不可见文本都具描述性且有意义时,可以帮助用户使用屏幕上的标题或链接进行导航。屏幕阅读器可以帮助您测试无障碍文本,以及确定可以将其添加到的位置。

2.1.2 备用文本

备用文本有助于将视觉界面转换为基于文本的界面。备用文本是代码中的一个简短标签 (最多 125 个字符),用于向无法看到图片的用户描述图片内容。由于备用文本仅适用于图片,因此无需向备用文本添加 "图片" 或 "照片"。屏幕阅读器会大声读出备用文本来代替图片。备用文本对于视力正常的用户也很重要,因为如果图片加载失败,系统将会显示备用文本。包含指定关键字,以帮助用户了解图片的信息。关键字还可以改进搜索引擎优化 (SEO)。

32d4bdb42cfdf025170d83678ed22338.png

正确做法

使用备用文本,用信息丰富的短语传达图片所显示的内容。

(备用文本示例: 夜晚的东京塔和天际线)

e2c888b7701b26767c8f42756805c136.png

注意

仅使用一两个词来描述图片可能无法提供有效信息。

(备用文本示例: 天际线)

7a546dbe9f0fb703df8c5ae02b5acc72.png

正确做法

撰写的替代文本要简短精悍、要能被屏幕阅读器快速读出并向用户提供背景信息。

(备用文本示例: 夜晚从屋顶观赏到的东京塔和天际线)

718aabe0ddd6c637145c91a8eec38c64.png

注意

如果备用文本的描述冗长,则可能会被截断。大多数屏幕阅读器不会读出超过 125 个字符的文本。

(备用文本示例: 东京塔天际线。夜晚从当地一家酒店的屋顶拍摄。这张图片于 2014 年 3 月 7 日满月之际用数码单反拍摄)

f2ebc441f7507406071361379a152c4a.png

正确做法

包含指定关键字。

(备用文本示例: 日本东京港区芝公园夜晚的天际线)

7079163e90a5dc846bc3a7da37c0a197.png

错误做法

仅仅为了改进 SEO 而将关键字放入备用文本中可能会使屏幕阅读器用户感到困惑。

(备用文本示例: 东京, 日本, 寿司, 塔, 傍晚, 夜晚, 建筑, 大楼, 天空, 天际线, 景色)

6f52a40aec92bb898f8fb5026db90f98.png

正确做法

撰写描述图片内容的备用文本,而不使用 "照片" 或 "图片" 等字词。

(备用文本示例: 城市风景 - 夜晚的东京塔)

3c654919ecc61e6c299427472ec3359c.png

注意

不需要在备用文本中包含 "照片" 或 "图片" 这样的字词。

(备用文本示例: 东京塔图片)

2.1.3 图片说明、相邻文本和嵌入式文本

对于图片中和周围的文本,应考虑无障碍设计,因为这些文本提供关于图片的关键信息。

0513841bb51b5367c94353d5d9e2a8b3.png

① 图片

② 图片说明

③ 相邻文本

图片说明

图片说明是显示在图片下方的文本。图片说明用于解说图片的背景信息 - 人物、内容、时间和地点。视力正常的用户和使用屏幕阅读器的用户都依靠图片说明来获取对图片的描述。

0df561dc5a7060261d57571a77ee73fa.png

正确做法

对于较长的描述,请使用图片说明而不是备用文本,因为图片说明适用于所有用户,而备用文本的长度限制在 125 个字符内。

(图片说明示例: 这把 20 世纪 20 年代的古董摇椅原本是总统图书馆的重要收藏品,现存放在 Black 博士家中。)

(备用文本示例: 一把放置在书房里的古董红木摇椅,上面铺有绿色天鹅绒垫子)

45e2d749f14f07a0e1d3a39d9a0d419d.png

注意

如果备用文本和图片说明的内容相同,使用屏幕阅读器的用户阅读速度可能会变慢。

(图片说明和备用文本示例: 一把 20 世纪 20 年代的古董红木摇椅安放在 Black 博士的书房里,上面铺有绿色天鹅绒垫子)

相邻文本

相邻文本或正文文本是图片旁边的文本,可以在叙述过程中对图片进行解释说明。如果相邻文本对图片进行了解释说明,则可能不需要备用文本,且可以将 alt 标记留空 (alt=””)。如果将 alt 标记留空,请删除会显示的图片文件名。

357e5fdfd88a6b60bd8b9ae54a73159c.png

图片说明和附近的正文文本对图片进行了解释说明。alt 标记为空 (alt=””)。

(图片说明示例: 这把 20 世纪 20 年代的古董摇椅原本是总统图书馆的重要收藏品,现存放在 Black 博士家中。)

(相邻文本: 这件古董收藏品是在佛罗里达州奥兰多市的一个车库售卖活动中发现的,现存放在 Simone Black 博士的书房里。现在,这把椅子放置在 Black 博士家的数百本图书之间,自然光线轻轻洒落在它的周围。)

图片中的嵌入式文本

屏幕阅读器无法阅读嵌入在图片中的文本。如果图片中有以文本形式嵌入的重要信息,请在备用文本中包含这些重要信息。

a14399431e891effd59c769c026cf7c5.png

注意

在图片中以文本形式嵌入重要信息并将同样的内容作为备用文本时,请务必谨慎。

(嵌入式文本和备用文本示例: 这把 20 世纪 20 年代的古董红木摇椅上面铺有绿色天鹅绒垫子,曾经是总统图书馆的重要收藏品,现存放在 Black 博士家中)

结合使用备用文本和图片说明

备用文本和图片说明包含不同的信息。只有在以下情况中,备用文本才有用: 相邻文本和图片说明没有描述图片的特征,而这些特征对于无法看到图片的用户了解图片至关重要,比如对物体的颜色、大小和位置的描述。

139a80793100e8d99e46909ba39499f5.png

正确做法

对于较长的描述,使用图片说明。

(图片说明文本示例: 这把 20 世纪 20 年代的古董摇椅原本是总统图书馆的重要收藏品,现存放在 Black 博士家中。它将于今年秋天在波士顿进行拍卖。)

(备用文本示例: 一把放置在书房里的古董红木摇椅,上面铺有绿色天鹅绒垫子)

6394d55ef5aeeebac4a801f11dd9ac0c.png

注意

在图片说明和备用文本中使用相同的信息可能会降低使用屏幕阅读器用户的阅读速度。

(图片说明和备用文本示例: 这把 20 世纪 20 年代的古董红木摇椅安放在 Black 博士的书房里,上面铺有绿色天鹅绒垫子。)

阅读速度

屏幕阅读器会向用户大声朗读每个界面元素。文本越短,屏幕阅读器用户浏览的速度就越快。

示例

切换到 jeffersonloveshiking@gmail.com

帐号切换器。切换到帐号 jeffersonloveshiking@gmail.com

说明

正确做法

撰写明晰简短的无障碍文本。

注意

考虑重写不够简洁且冗长的无障碍文本。

控件类型和状态

屏幕阅读器可以通过说出控件名称或发出声音,来自动声明控件的类型或状态。

示例

搜索

搜索字段

说明

正确做法

使用简短说明。

注意

通常情况下,不应指出控件类型,因为 ARIA 标签会向屏幕阅读器用户声明控件类型,而使该额外的标签成为多余。

示例

仅通过 WLAN 下载

已选择通过 WLAN 下载

说明

正确做法

使用简短说明。

注意

建议不要包含当前状态,在本例中,当前状态为 "已选择" WLAN。

2.3.1 开发者注意事项

如果控件类型或状态未正确读出,则说明控件的无障碍角色可能是自定义控件或设置不当。

  • 无障碍角色关联: 可以将每个元素与网站上的无障碍角色相关联或对其进行编码,以使其能够正确通信。这意味着将按钮设置为按钮,将复选框设置为复选框。

  • 原生元素: 如果您扩展或沿用原生界面元素,可能会找到正确的角色。否则,要针对各个平台覆盖无障碍信息,您可以参阅适用于网站的 ARIA 和适用于 Android 的 AccessibilityNodeInfo。

  • ARIA

    https://www.w3.org/WAI/intro/aria

  • AccessibilityNodeInfo

    https://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo

您可以访问官方文档,了解构建更符合无障碍标准的自定义视图的相关内容:

https://developer.android.google.cn/guide/topics/ui/accessibility/apps.html#custom-views

通过操作指示元素

操作动词会指明点按一个元素或链接可执行什么操作,而不是说明元素是什么样子。这描述了一个元素所代表的操作,不依赖于视敏度。

0d233ceda10c36fb54d8165e069d9cd1.jpeg

0b7d7aa51a3eca9bd4c934c09d20bdf2.jpeg

正确做法

通过被大声读出的描述可指明图标代表的是什么操作。

注意

描述图标外观可能无法说明操作是什么。

2c3b5a294d9e6de7982a172a24ca22dc.jpeg

78d23b6fc580795a752757a2c660d5f0.jpeg

正确做法

导航菜单的无障碍文本可以是 "显示导航菜单" 和 "隐藏导航菜单" (首选) 或 "显示主菜单" 和 "隐藏主菜单" (可接受)。

注意

建议修改未指明将发生什么操作的无障碍文本,例如 "侧面抽屉式导航栏"。

具有状态变化的元素

对于会在值或状态之间切换的图标,根据它们向用户呈现的方式进行声明。例如,如果一个星形图标代表向心愿单添加内容的操作,应用可以读出 "添加到心愿单" 或 "从心愿单中移除"。

  • 如果图标代表某个项目的属性,且已编码为复选框,屏幕阅读器将读出当前状态 (如 "启用" 或 "停用")。

  • 如果图标代表一项操作且已选择,文本标签可以指定发生的操作,例如 "添加到心愿单"。

控件交互

用户可能使用键盘或其他设备进行导航,而不是用手指或鼠标,在向用户说明如何与控件互动时,应该考虑到这一点。无障碍软件将为用户描述正确的互动方式。

f94ef1389ffa47fbbe67d9a0d3693e6a.jpeg

de840649cd6ac288270e085f126ba6b4.jpeg

正确做法

"语音搜索" 命令描述了与输入方式 (语音) 相配合的用户任务 (搜索)。

注意

建议修改未能充分说明如何激活控件的命令。此语音指令描述的激活方式是 "点按",但其实可以通过键盘按键、开关设备或盲文显示器进行选择。因为这是一项执行搜索的任务,所以可以提到操作,而不是 "说话"。

您可以访问官方文档,了解 Android 自定义操作的相关内容:

http://developer.android.google.cn/reference/android/view/accessibility/AccessibilityNodeInfo.html#addAction(android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction) 

提示语音

提示语音为不明晰的操作提供额外的信息。例如,Android 的 "双击选择" 功能提示用户点按两次。Android TalkBack 也会声明与元素相关的任何自定义操作。

以上就是无障碍设计的第二篇内容,敬请持续关注下一篇文章,届时我们会为您带来图片、声音和运动、实现无障碍的相关内容。也欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。

015556fd606bcd12414c0dce532420dc.gif

推荐阅读

如页面未加载,请刷新重试

955cc4e2ec553f38d4835a6c8da5b224.gif 点击屏末 阅读原文 | 即刻了解无障碍功能更多相关内容


fcf393b13fcd835315b45d81e99c9b9b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java面经】一次颇为进阶的面试记录

工作之余又参加了一次面试,对我来说比之前的面试难度都提了一个度,面试官从公司场景引申聊到高并发和Redis的很多问题。 可惜我太菜了回答不上来,只能回答基础的问题。面完就是凉凉的味道。。 Redis相关 Redis的String是怎么实现的&#xff…

盘点项目管理工具DHTMLX Gantt 的常见问题

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求,具备完善的甘特图图表库,功能强大,价格便宜,提供丰富而灵活的JavaScript API接口,与各种服务器端技术&am…

vue中集成省市区街四级地址组件

大家好,我是雄雄。 前言 省市区地址大家应该都不陌生吧,网上买个东西,得填地址。中午定个饭,得写地址;叫个货拉拉叫个跑腿,是不是也得写地址。 但是选择地址的时候,不同场景下选择的范围不同&…

【C分支与循环】详解分支与循环

分支与循环前言一、什么是语句?二、分支语句(选择结构)(一)概念(二)if语句1.概念2.例子(1)单分支(2)双分支(3)多分支&…

vulnhub DC系列 DC-1

目录 下载地址 漏洞分析 信息收集 漏洞尝试 漏洞利用 flag1 flag2 flag3 flag4 提权 下载地址 DC-1.zip (Size: 733 MB)Download: http://www.five86.com/downloads/DC-1.zipDownload (Mirror): https://download.vulnhub.com/dc/DC-1.zip使用方式:ova文件直接使用vm…

nacos安装与使用

nacos安装与使用nacos下载安装下载方式 一:下载方式 二:版本(2.0.3)nacos启动在项目中注册nacos服务nacos下载安装 下载方式 一: nacos官网下载 下载方式 二:版本(2.0.3) 链接&a…

【Flask框架】——28 Flask_SQLAlchemy

Flask-SQLAlchemy Flask-SQLAlchemy的使用对SQLAlchemy进行了封装和优化: Flask-SQLAlchemy是Flask框架的一个插件; Flask-SQLAlchemy是对SQLAlchemy进行了一个简单的封装的一个插件,使得我们在Flask中使用sqlalchemy更加的简单。 1.安装…

排查wx.previewImage真机预览一直loading问题

起因 使用van-uploader预览图片一直loading预览不了,开发者工具,浏览器都是秒开的。我看源码是使用wx.previewImage,自己写了个demo也是同样问题。 排查原因 链接是否拼接错误域名有没有添加进白名单防盗链referrer证书是否过期&#xff0…

企业数字化转型蓝图规划、生态体系建设、数字化管理平台建设方案

【版权声明】本资料来源网络,仅用于行业知识分享,供个人学习参考,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间进行删除!完整资料领取见文末,部分资料内容: 数字化助力上下…

SuperMap iServer在不同系统中设置开机自启动--Linux篇

目录前言一:CentOS系统二:Ubantu系统作者:kxj 前言 在成功部署SuperMap iServer之后,每次重启电脑都需要手动去启动iServer,如何能让iServer在每次重启电脑时都自动启动呢?今天咱们一起来看看在Linux系统中…

实地址方式下的可屏蔽中断服务程序设计

目录 实地址方式下的可屏蔽中断服务程序设计 程序装入方式 直接装入(会这种方式就可以,考试都给你地址让你装) 系统功能调用装入(了解考纲没要求) 中断屏蔽与中断结束的处理(了解) 会直接装…

Python基础(十九):函数加强

文章目录 函数加强 一、递归 1、递归的应用场景 2、应用:3以内数字累加和 二、lambda 表达式 1、lambda的应用场景 2、lambda语法 3、示例:计算a b 4、lambda的参数形式 5、lambda的应用 三、高阶函数 1、体验高阶函数 2、内置高阶函数 …

Grafana配置邮件

1.Grafana配置文件路径 默认的配置文件路径是:/etc/grafana/grfana.ini 2.默认情况下,邮件服务是关闭的 systemctl status grafana-server 可以查看到当前服务的配置文件在哪里 3.没有改动之前的配置文件 /etc/grafana/grfana.ini systemctl resta…

插件算法管理以及任务队列机制

插件算法管理以及任务队列机制插件管理抽象插件基类插件导入导出规范__attribute__((visibility("default")))插件实例插件管理者算法管理抽象算法基类算法Map与具体算法注册规范PetCoin算法实例算法管理者任务队列机制抽象任务具体任务任务管理者任务队列插件管理 …

“浪潮信息龙蜥联合实验室”正式成立!2万+人在线,带你一文读懂MeetUp精彩瞬间

12 月 24 日,龙蜥社区(OpenAnolis) “走进系列” 第 4 期——走进浪潮信息 MeetUp 于线上开展并圆满结束。本次走进浪潮信息 MeetUp 线上观看 2 万人次,收回调研问卷近 500 份,直播间万人参与互动。本次 MeetUp 汇集了…

windows 10管理多版本nodejs

在实际的开发中,不同的项目使用的nodejs的版本不一致。又不想升级或者降低项目的版本。这时就需要灵活的切换本地开发环境的nodejs版本。这里推荐使用nvm(一个管理nodejs版本的工具),亲测实用。 1、下载地址 https://github.com/coreybutle…

Biniware Run V6.1.0 快速启动工具中文版

前言 Biniware Run是一款便携式Windows桌面工具,可让您从一个地方快速访问自己喜欢的网站地址,文件和文件夹。只需从桌面拖放任何网站地址,文件或文件夹内的彩色圆圈内,您就可以使用这个方便的软件轻松访问您感兴趣的所有内容。 …

SpringCloud之服务治理Eureka

1.服务注册和发现是什么意思?Spring Cloud 如何实现? 服务注册和发现的意思是服务进程在注册中心注册自己的位置,客户端应用进程向注册中心发起查询,来获取服务的位置,服务发现的一个重要作用就是提供一个可用的服务列…

【Linux】Linux调试器--gdb的使用

有时候,我们并不需要被教导,而是应该被不断的提醒。 文章目录一、gdb的介绍二、debug和realease版本的区别三、gdb的使用1.显示代码: l行号(list)指令2.设置断点: b行号(breakpoint&#xff09…

HTML5 定位

文章目录HTML5 定位geolocation简介getCurrentPosition()watchPosition() 和 clearWatch()百度地图HTML5 定位 geolocation 简介 在HTML5中,可以使用geolocation对象来获取用户的地理位置信息。 语法 window.navigator.geolocation //简写为 navigator.geoloca…