Android 中的可訪問性:開發人員見解和實施指南
已發表: 2022-09-12在全球範圍內,大約有 2.85 億人患有視力障礙。 因此,在設計新應用程序或考慮設計改造時,根據這一廣泛用戶群的需求調整應用程序當然是一個好主意。 為視障人士定制應用程序可增強所有用戶的體驗。 考慮改進應用程序可訪問性的其他原因是什麼,以及如何做到這一點? 請在下面找到所有答案!
視障人士如何使用應用程序?
屏幕閱讀器是一種為盲人和視障人士運行應用程序(或簡單地瀏覽智能手機屏幕)的工具。 最流行的Android屏幕閱讀器是TalkBack 。 使用此工具,用戶可以通過滑動或拖動等手勢執行輸入。
通常,輸出是語音反饋。 在TalkBack中,我們有兩種手勢輸入模式:
- 觸摸探索,在屏幕上拖動手指。
- 線性導航,您可以用手指左右滑動,直到找到感興趣的項目。
到達您感興趣的項目後,您可以雙擊它來激活它。 想了解更多關於如何運行 TalkBack 的信息? 請閱讀以下文章。
無障礙應用原則
為了讓有視力障礙的人能夠使用我們的應用程序,我們首先需要了解設計它時必須遵循的原則。 因此,在我們進入實施部分之前,讓我們討論一下最重要的假設。
佈局和排版
應用程序的視覺部分至關重要。 正確實現的按鈕和文本處理是使應用程序易於訪問的最重要因素之一。
觸摸目標
觸摸目標是響應用戶交互的屏幕部分。 主要建議是創建分辨率至少為 48dp x 48dp 的觸摸目標。 您將在下一章中了解更多相關信息。
顏色和對比度
萬維網創建了顏色對比度可訪問性指南,以幫助和幫助用戶解決顏色缺陷。 根據文檔,關於顏色對比度可訪問性的關鍵方面是:
- 比例:文本和交互元素的顏色對比度至少應為 4.5:1。
- 顏色作為指標:顏色不應該是交互元素的唯一指標。 如果您還在懸停時為鏈接添加下劃線或用星號標記必填字段,那將是最好的。
- 色盲:紅/綠色盲是最常見的。 因此,您應該避免紅上綠或綠上紅。 出於同樣的原因,請避免使用紅色和綠色作為“壞”和“好”指標。
排版
用戶可以增加字體大小以提高可讀性。 在 Android 設備中,它是一個常用的系統選項,因此請確保有足夠的空間容納大字體和外來字體。
輔助功能文本
可訪問性文本既是可見文本(例如,UI 元素標籤、按鈕、鏈接和表單上的文本),也是不可見描述(內容描述,可以提供有關所描述組件的更多信息)。
無障礙文本最常見的用例是什麼?
控制類型和狀態
屏幕閱讀器(例如 TalkBack)可以通過說出控件名稱或發出聲音來自動宣布控件的類型或狀態。
通過動作指示元素
動作動詞表示當您點擊一個項目或鏈接時它會做什麼並描述視圖的作用。
狀態變化的元素
對於在值或狀態之間切換的圖標,屏幕閱讀器會根據圖標呈現給用戶的方式來描述圖標。 有關更多示例,請閱讀 Material Design 指南。
概括
本章教您如何為視障人士和盲人調整設計。 到目前為止,我們已經介紹了佈局、排版和文本可訪問性。 現在我們將繼續討論它們的實施原則。
無障礙實施
在下一節中,我將重點介紹實現應用程序可訪問性的關鍵方面。 讓我們開始!
佈局 - 觸摸目標
正如我在理論部分提到的,每個可點擊元素至少應該有 48dp/48dp。
有幾個選項可以做到這一點。 你可以:
- 按照建議確定寬度和高度屬性的值 (48dp/48dp)
- 在圖標周圍添加填充
- 指定屬性的值:MinWidth 和/或 minHeight
- 註冊 TouchDelegate。
查看 Google 官方文檔中的示例。 它顯示了具有推薦的觸摸目標大小的元素:
<圖像按鈕 ... 安卓:minWidth="40dp" 安卓:minHeight="32dp" 安卓:paddingLeft="4dp" 安卓:paddingTop="8dp" 安卓:paddingRight="4dp" android:paddingBottom="8dp" />
輔助功能文本
將輔助功能文本附加到 UI 元素的方法之一是使用名為ContentDescription的 Android 屬性。 例如,如果您不為圖像按鈕提供它,則 TalkBack 用戶的體驗可能會很不協調。
看例子:
<!-- 以下字符串的值為“搜索”。 --> <圖像視圖 ... android:contentDescription="@string/search" />
對於間隔和分隔符等裝飾元素,將其“android:contentDescription”
屬性設置為"null"
。 如果您的應用僅支持運行 Android 4.1(API 級別 16)或更高版本的設備,您可以改為將“android:importantForAccessibility”
屬性設置為"no"
。
請確保不要在您的內容描述中包含控件類型或控件狀態。 Android 本身就有按鈕、選擇、選中等字詞。
標籤技術
您可以在下面找到一組描述應用程序中 UI 組件的良好實踐。
相互描述的組件
如果您有一個組件允許您提供一些數據(例如 EditText),那麼最好有一個描述它的View 對象(例如 TextView)。 這就是創建屬性"android:labelFor"
的原因。 請看示例:
<!-- 標籤文本將是“名稱:”--> <文本視圖 ... 安卓: android:labelFor="@+id/nameEntry" android:text="@string/name" /> <!-- 輔助功能文本將是“編輯名稱文本”--> <編輯文本 ... 安卓:/> <!-- 標籤文本將是“姓氏:”--> <文本視圖 ... 安卓: android:labelFor="@+id/surnameEntry" android:text="@string/姓氏" /> <!-- 輔助功能文本將是“編輯姓氏文本”--> <編輯文本 ... 安卓:/>
相關元素集合
如果您的應用具有自然相關的 UI 元素(例如包含有關書籍的信息的字段),您可以使用可聚焦容器將它們排列成組。 為此,請將容器對象“android:focusable”
屬性設置為 true。
這樣,TalkBack 可以在一個公告中一個接一個地呈現內部元素的內容描述。 對內容進行分組減少了用戶在簡化語音輸出時必須執行的滑動量。 請看示例:
<線性佈局 ... 安卓: 機器人:方向=“垂直” android:focusable="true"> <文本視圖 ... 安卓: android:text="@string/title"/> <文本視圖 ... 安卓: android:text="@string/author"/> <文本視圖 ... 安卓: android:text="@string/pages"/> </線性佈局>
當然,如果你的容器有嵌套視圖,你也可以對它們應用這個解決方案。 這將使您的應用程序更易於導航。
輔助功能操作
當您的應用支持點擊、長按或滑動等操作時,您需要針對視障人士調整這些操作。 這就是我們將在本文的這一部分中重點討論的內容。
看看如何實現它:
ViewCompat.addAccessibilityAction( // 添加輔助功能的視圖 項目視圖, // 無障礙服務讀取的標籤 getString(R.string.save) ) { _, _ -> // 可訪問性命令 保存項目() 真的 }
這會導致 TalkBack 宣布“雙擊存檔” 。
實施無障礙操作後,用戶現在可以通過操作菜單訪問該操作。 稍後我會告訴您有關導航到此菜單的信息。 請記住:允許用戶有效地在您的應用程序中執行所有流程至關重要。
小部件
這部分很短,但非常重要。 創建 UI 組件時,請使用或擴展系統提供的小部件,這些小部件盡可能位於 Android 的類層次結構中。 位於層次結構中的系統提供的小部件已經具有您的應用程序所需的大部分可訪問性功能。 主要包括:
- 輔助功能操作
- 特徵
- 狀態信息。
多虧了這一點,您不需要從頭開始為組件編寫完整的可訪問性支持,並且您將降低出錯的風險。
導航
TalkBack 繼續增長。 不久前,我們使用了兩個上下文菜單(全局和本地)來導航我們的智能手機系統。 現在,這兩個菜單合二為一。
上下文菜單用於兩個主要目的:
- 顧名思義,它用於導航。 您可以根據應用程序首選項或功能瀏覽單詞、標題、鏈接、行、獨特內容或其他點。
- 第二個目的允許用戶快速更改 TalkBack 設置和控件。
在此菜單中,您可以找到一組操作(在上面的“輔助功能操作”部分中提到)。 如何訪問此菜單? 這很簡單。 你只需要做出向上和向右滑動的手勢。
可訪問性測試
在我迄今為止開發的項目中,我主要受益於以下三個輔助工具:輔助功能掃描儀、Espresso 和 Lint。 當然,您可以使用更多的工具。 我強烈建議您自己檢查一下。 您可以在此處找到所有必要的文檔。
輔助功能掃描儀
此工具掃描用戶界面並提供改進應用程序可訪問性的建議。
Accessibility Scanner允許任何人(不僅是開發人員)快速輕鬆地識別一些常見的可訪問性增強功能,例如小觸摸目標、文本和圖像的對比度錯誤、未標記小部件的缺少內容描述等。如果您想開始使用 Accessibility Scanner 或只是簡單地使用 Accessibility Scanner搜索更詳細的說明,請閱讀以下文檔。
安卓皮棉
我敢肯定,你們中的大多數人都從日常工作中了解了這個工具。 值得記住的是,Android Studio 還提供有關各種可訪問性問題的警告以及指向源代碼中包含這些問題的位置的鏈接。
濃咖啡
Espresso是一個Android 測試庫,可讓您快速輕鬆地測試您的用戶界面。 它支持與應用程序的經過測試的用戶界面組件進行交互,並確保某些行為發生或滿足條件。 當然,作為可訪問性支持的一部分,您可以啟用和配置可訪問性測試。
概括
讓您的應用程序易於訪問並不僅僅向新用戶開放。 它有助於改善我們的日常生活,讓世界更具包容性。 我希望這篇文章能幫助您了解可訪問性。 如需進一步閱讀,請不要忘記查看官方文檔。