android 支援鍵盤導航
編寫:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/navigation.html
除了軟鍵盤輸入法(如虛擬鍵盤)以外,Android支援將物理鍵盤連線到裝置上。鍵盤不僅方便輸入文字,而且提供一種方法來導航和與應用互動。儘管多數的手持裝置(如手機)使用觸控作為主要的互動方式,但是隨著平板和一些類似的裝置正在逐步流行起來,許多使用者開始喜歡外接鍵盤。
隨著更多的Android裝置提供這種體驗,優化應用以支援通過鍵盤與應用進行互動變得越來越重要。這節課介紹了怎樣為鍵盤導航提供更好的支援。
Note: 對那些沒有使用可見導航提示的應用來說,在應用中支援方向性的導航對於應用的可用性也是很重要的。在我們的應用中完全支援方向導航還可以幫助我們使用諸如 uiautomator 等工具進行自動化使用者介面測試。
測試應用
因為Android系統預設開啟了大多必要的行為,所以使用者可能已經可以在我們的應用中使用鍵盤導航了。
所有由Android framework(如Button和EditText)提供的互動部件是可獲得焦點的。這意味著使用者可以使用如D-pad或鍵盤等控制裝置,並且當某個部件被選中時,部件會發光或者改變外觀。
為了測試我們的應用:
-
將應用安裝到一個帶有實體鍵盤的裝置上。
如果我們沒有帶實體鍵盤的裝置,連線一個藍芽鍵盤或者USB鍵盤(儘管並不是所有的裝置都支援USB連線)
我們還可以使用Android模擬器:
-
在AVD管理器中,要麼點選New Device,要麼選擇一個已存在的文件點選Clone。
-
在出現的視窗中,確保Keyboard和D-pad開啟。
-
-
為了驗證我們的應用,只是用Tab鍵來進行UI導航,確保每一個UI控制的焦點與預期的一致。
找到任何不在預期焦點的例項。
-
從頭開始,使用方向鍵(鍵盤上的箭頭鍵)來控制應用的導航。
在 UI 中每一個被選中的元素上,按上、下、左、右。
找到每個不在預期焦點的例項。
如果我們找到任何使用Tab鍵或方向鍵後導航的效果不如預期的例項,那麼在佈局中指定焦點應該聚焦在哪裡,如下面幾部分所討論的。
處理Tab導航
當使用者使用鍵盤上的Tab鍵導航我們的應用時,系統會根據元件在佈局中的顯示順序,在元件之間傳遞焦點。如果我們使用相對佈局(relative layout),例如,在螢幕上的元件順序與佈局檔案中元件的順序不一致,那麼我們可能需要手動指定焦點順序。
舉例來說,在下面的佈局檔案中,兩個對齊右邊的按鈕和一個對齊第二個按鈕左邊的文字框。為了把焦點從第一個按鈕傳遞到文字框,然後再傳遞到第二個按鈕,佈局檔案需要使用屬性 android:nextFocusForward,清楚地為每一個可被選中的元件定義焦點順序:
<RelativeLayout ...>
<Button
android:id="@+id/button1"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:nextFocusForward="@+id/editText1"
... />
<Button
android:id="@+id/button2"
android:layout_below="@id/button1"
android:nextFocusForward="@+id/button1"
... />
<EditText
android:id="@id/editText1"
android:layout_alignBottom="@+id/button2"
android:layout_toLeftOf="@id/button2"
android:nextFocusForward="@+id/button2"
... />
...
</RelativeLayout>
現在焦點從 button1
到 button2
再到 editText1
,改成了按照在螢幕上出現的順序:從 button1
到editText1
再到 button2
。
處理方向導航
使用者也能夠使用鍵盤上的方向鍵在我們的app中導航(這種行為與在D-pad和軌跡球中的導航一致)。系統提供了一個最佳猜測:根據螢幕上 view 的佈局,在給定的方向上,應該將交掉放在哪個 view 上。然而有時,系統會猜測錯誤。
當在給定的方向進行導航時,如果系統沒有傳遞焦點給合適的 View,那麼指定接收焦點的 view 來使用如下的屬性:
當使用者導航到那個方向時,每一個屬性指定了下一個接收焦點的 view,如根據 view ID 來指定。舉例來說:
<Button
android:id="@+id/button1"
android:nextFocusRight="@+id/button2"
android:nextFocusDown="@+id/editText1"
... />
<Button
android:id="@id/button2"
android:nextFocusLeft="@id/button1"
android:nextFocusDown="@id/editText1"
... />
<EditText
android:id="@id/editText1"
android:nextFocusUp="@id/button1"
... />
轉自:http://hukai.me/android-training-course-in-chinese/input/keyboard-input/navigation.html
相關文章
- Android 安卓手機及平板虛擬鍵盤遮住底部導航欄問題Android安卓
- Android 8.1平臺客製化虛擬導航按鍵Android
- Android 8.1平臺SystemUI虛擬導航鍵載入流程解析AndroidSystemUI
- Android開發者網址導航Android
- android自定義鍵盤 自定義身份證鍵盤Android
- Android軟鍵盤模式Android模式
- android 自定義鍵盤Android
- 自定義Android鍵盤Android
- 支援鍵盤上下鍵的隔行變色程式碼
- 使用Android Lollipop導航動畫Android動畫
- Android鍵盤操作總結Android
- android鍵盤擋住介面Android
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- Android EditText多行顯示並支援修改軟鍵盤右下角按鈕Android
- Google更新Android平臺鍵盤應用 支援手勢滑動輸入GoAndroid
- 具有彈性效果的右鍵導航選單
- 眾多Logitech滑鼠/鍵盤支援改進Git
- Android自定義數字鍵盤Android
- Android 軟鍵盤踩坑記Android
- Android 隱藏手機鍵盤Android
- Android自定義收銀鍵盤Android
- Android 監聽鍵盤狀態變化,並獲取鍵盤高度Android
- DukuanCMS_網址導航,導航網站,網址導航原始碼網站原始碼
- 自定義右鍵導航選單程式碼例項
- 微軟XboxOne遊戲將支援鍵盤滑鼠操控微軟遊戲
- Android Studio 百度地圖導航Android地圖
- Android全面屏虛擬導航欄適配Android
- Android 十年之路: 主屏與導航Android
- Android官方導航欄ActionBar使用詳解Android
- Android自定義view之emoji鍵盤AndroidView
- Android 軟鍵盤相關問題Android
- Android 軟鍵盤響應事件解析Android事件
- Android 監聽鍵盤彈出收起Android
- Android 啟動引導頁(動態生成底部導航圓點)Android
- 導航特效特效
- jquery導航jQuery
- Prism導航
- 路由導航路由