android 支持键盘导航

news/2024/12/22 14:57:29/

编写:zhaochunqi - 原文:http://developer.android.com/training/keyboard-input/navigation.html

除了软键盘输入法(如虚拟键盘)以外,Android支持将物理键盘连接到设备上。键盘不仅方便输入文本,而且提供一种方法来导航和与应用交互。尽管多数的手持设备(如手机)使用触摸作为主要的交互方式,但是随着平板和一些类似的设备正在逐步流行起来,许多用户开始喜欢外接键盘。

随着更多的Android设备提供这种体验,优化应用以支持通过键盘与应用进行交互变得越来越重要。这节课介绍了怎样为键盘导航提供更好的支持。

Note: 对那些没有使用可见导航提示的应用来说,在应用中支持方向性的导航对于应用的可用性也是很重要的。在我们的应用中完全支持方向导航还可以帮助我们使用诸如 uiautomator 等工具进行自动化用户界面测试。

测试应用

因为Android系统默认开启了大多必要的行为,所以用户可能已经可以在我们的应用中使用键盘导航了。

所有由Android framework(如Button和EditText)提供的交互部件是可获得焦点的。这意味着用户可以使用如D-pad或键盘等控制设备,并且当某个部件被选中时,部件会发光或者改变外观。

为了测试我们的应用:

  1. 将应用安装到一个带有实体键盘的设备上。

    如果我们没有带实体键盘的设备,连接一个蓝牙键盘或者USB键盘(尽管并不是所有的设备都支持USB连接)

    我们还可以使用Android模拟器:

    1. 在AVD管理器中,要么点击New Device,要么选择一个已存在的文档点击Clone

    2. 在出现的窗口中,确保KeyboardD-pad开启。

  2. 为了验证我们的应用,只是用Tab键来进行UI导航,确保每一个UI控制的焦点与预期的一致。

    找到任何不在预期焦点的实例。

  3. 从头开始,使用方向键(键盘上的箭头键)来控制应用的导航。

    在 UI 中每一个被选中的元素上,按上、下、左、右。

    找到每个不在预期焦点的实例。

如果我们找到任何使用Tab键或方向键后导航的效果不如预期的实例,那么在布局中指定焦点应该聚焦在哪里,如下面几部分所讨论的。

处理Tab导航

当用户使用键盘上的Tab键导航我们的应用时,系统会根据组件在布局中的显示顺序,在组件之间传递焦点。如果我们使用相对布局(relative layout),例如,在屏幕上的组件顺序与布局文件中组件的顺序不一致,那么我们可能需要手动指定焦点顺序。

举例来说,在下面的布局文件中,两个对齐右边的按钮和一个对齐第二个按钮左边的文本框。为了把焦点从第一个按钮传递到文本框,然后再传递到第二个按钮,布局文件需要使用属性 android:nextFocusForward,清楚地为每一个可被选中的组件定义焦点顺序:

<RelativeLayout ...><Buttonandroid:id="@+id/button1"android:layout_alignParentTop="true"android:layout_alignParentRight="true"android:nextFocusForward="@+id/editText1"... /><Buttonandroid:id="@+id/button2"android:layout_below="@id/button1"android:nextFocusForward="@+id/button1"... /><EditTextandroid: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 来使用如下的属性:

  • android:nextFocusUp
  • android:nextFocusDown
  • android:nextFocusLeft
  • android:nextFocusRight

当用户导航到那个方向时,每一个属性指定了下一个接收焦点的 view,如根据 view ID 来指定。举例来说:

<Buttonandroid:id="@+id/button1"android:nextFocusRight="@+id/button2"android:nextFocusDown="@+id/editText1"... />
<Buttonandroid:id="@id/button2"android:nextFocusLeft="@id/button1"android:nextFocusDown="@id/editText1"... />
<EditTextandroid:id="@id/editText1"android:nextFocusUp="@id/button1"

... />

转自:http://hukai.me/android-training-course-in-chinese/input/keyboard-input/navigation.html


http://www.ppmy.cn/news/772350.html

相关文章

计算机键盘的区域,刘坚强办公学《新手学五笔打字》1-1 键盘区域的划分

原标题&#xff1a;刘坚强办公学《新手学五笔打字》1-1 键盘区域的划分 大家好&#xff0c;从今天开始&#xff0c;我们来学习五笔打字。因为打字是通过电脑键盘来操作的&#xff0c;所以对于新手来说&#xff0c;首先要做的是认识电脑键盘。 键盘就是这个黑色的长方形物体(如图…

单片机4x4矩阵键盘c语言,MSP430单片机控制LED数码管显示4X4矩阵键盘键值C语言程序...

Config.h头文件 #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define uchar unsigned char #define uint unsigned int #define ulong uns…

独立式键盘实验c语言,单片机设计报告—独立式键盘控制的4级流水灯.doc

单片机设计报告—独立式键盘控制的4级流水灯 单片机结题报告 独立式键盘控制的4级流水灯 班 级 姓  名 吴泽宇 学 号 2008405340 一、任务目的: 通过采用单片机制作一个独立式键盘控制的4级流水灯系统,熟悉C语言的基本语句。 二、任务要求: 用四个不同的键盘控制不同的流水…

51单片机c语言 矩阵键盘,AT89S51单片机对4×4矩阵键盘的控制设计

描述 1.实验任务 如图4.14.2所示,用AT89S51的并行口P1接44矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。对应的按键的序号排列如图4.14.1所示 4.14.1 2.硬件电路原理图 图4.14.2 3.系统板上硬件连线 (1).把“单片机系统…

SqlDataAdapter类充当 DataSet 和 SQL数据库间的桥梁

SqlDataAdapter 类是 .NET Framework 中 System.Data.SqlClient 命名空间的一部分&#xff0c;它专为与 Microsoft SQL Server 数据库交互而设计。 SqlDataAdapter 类充当 DataSet 和 SQL Server 数据库之间的桥梁。它提供了一些方法&#xff0c;用于从 SQL Server 数据库填充…

企业金蝶云星空服务器数据库中了locked勒索病毒如何应对

近日&#xff0c;很多企业的金蝶云星空财务账套被locked勒索病毒攻击&#xff0c;财务系统内的许多重要数据被加密&#xff0c;无法正常打开&#xff0c;计算机内的所有文件的扩展名全部都变成了.locked后缀勒索病毒&#xff0c;导致服务器数据库被锁定。这种情况的出现与企业的…

计算机快捷键 f6,联想g510笔记本触摸板无法使用快捷键f6关闭?

联想笔记本g510怎么关闭触控板。我的笔记本是联想笔记本g510&#xff0c;我经常写经验&#xff0c;因此经常会碰到触控板&#xff0c;那么我们该如何关闭触控板呢&#xff1f;我使用快捷键不好使&#xff0c;下面和大家分享我的两种方法。希望能够帮到大家。 一、查看有没有安装…

联想thinkpad如何关闭触摸板

Tinkpad系列很多关闭触摸屏的功能的方法都是没有的&#xff01;&#xff01;&#xff01;比如说1.FnF6&#xff0c;或者Fn某个按键。。。直接关闭没用比如说2.控制面板&#xff0c;鼠标/键盘&#xff0c;找到触摸开关。。。间接关闭没用比如说3.我的电脑&#xff0c;硬件控制系…