public static class Keyboard.Key
extends Object
java.lang.Object | |
↳ | android.inputmethodservice.Keyboard.Key |
用于描述键盘中单个按键的位置和特性的类。
XML attributes |
|
---|---|
android:codes |
The unicode value or comma-separated values that this key outputs. |
android:horizontalGap |
Default horizontal gap between keys. |
android:iconPreview |
The icon to show in the popup preview. |
android:isModifier |
Whether this is a modifier key such as Alt or Shift. |
android:isRepeatable |
Whether long-pressing on this key will make it repeat. |
android:isSticky |
Whether this is a toggle key. |
android:keyEdgeFlags |
Key edge flags. |
android:keyHeight |
Default height of a key, in pixels or percentage of display width. |
android:keyIcon |
The icon to display on the key instead of the label. |
android:keyLabel |
The label to display on the key. |
android:keyOutputText |
The string of characters to output when this key is pressed. |
android:keyWidth |
Default width of a key, in pixels or percentage of display width. |
android:popupCharacters |
The characters to display in the popup keyboard. |
android:popupKeyboard |
The XML keyboard layout of any popup keyboard. |
Fields |
|
---|---|
public int[] |
codes 所有关键代码(unicode或自定义代码),这个关键字可以产生,零是最重要的。 |
public int |
edgeFlags 指定锚定到键盘边缘的标志,用于检测刚刚超出键的边界的触摸事件。 |
public int |
gap 此键之前的横向间隙 |
public int |
height 关键的高度,不包括差距 |
public Drawable |
icon 要显示的图标而不是标签。 |
public Drawable |
iconPreview 预览版本的图标,用于预览弹出窗口 |
public CharSequence |
label 要显示的标签 |
public boolean |
modifier 这是否是修改键,如Shift或Alt |
public boolean |
on 如果这是一个粘性键,它打开了吗? |
public CharSequence |
popupCharacters 弹出式字符 |
public int |
popupResId 如果此键弹出迷你键盘,则这是该键盘的XML布局的资源ID。 |
public boolean |
pressed 此键的当前按下状态 |
public boolean |
repeatable 这个键是否在按下时重复 |
public boolean |
sticky 该键是否粘滞,即切换键 |
public CharSequence |
text 按下时输出的文本。 |
public int |
width 键的宽度,不包括间隙 |
public int |
x 键盘布局中键的X坐标 |
public int |
y 键盘布局中键的Y坐标 |
Public constructors |
|
---|---|
Keyboard.Key(Keyboard.Row parent) 创建一个没有属性的空键。 |
|
Keyboard.Key(Resources res, Keyboard.Row parent, int x, int y, XmlResourceParser parser) 使用给定的左上角坐标创建一个键,并从XML解析器中提取其属性。 |
Public methods |
|
---|---|
int[] |
getCurrentDrawableState() 根据键的当前状态和类型返回键的可绘制状态。 |
boolean |
isInside(int x, int y) 检测一个点是否落在该键内。 |
void |
onPressed() 通知密钥它已被按下,以防需要改变其外观或状态。 |
void |
onReleased(boolean inside) 更改按键的按下状态。 |
int |
squaredDistanceFrom(int x, int y) 返回键中心和给定点之间距离的平方。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
此密钥输出的unicode值或以逗号分隔的值。
可能是一个字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。
可能是一个整数值,如“ 100
”。
这也可能是对包含此类型值的资源(格式为“ @[package:]type:name
”)或主题属性(格式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 codes
。
键之间的默认水平间隙。
可能是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。
可能是一个小数值,它是一个浮点数, 14.5%
%或%p,例如“ 14.5%
”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 horizontalGap
。
要在弹出预览中显示的图标。
必须是另一个资源的引用,其形式为“ @[+][package:]type:name
”,或者其形式为“一个主题属性 ?[package:][type:]name
”。
这对应于全局属性资源符号 iconPreview
。
是否这是一个修饰键,如Alt或Shift。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 isModifier
。
长按这个键是否会重复。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 isRepeatable
。
这是否是一个切换键。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 isSticky
。
关键边缘标志。
必须是以下常量值中的一个或多个(用'|'分隔)。
Constant | Value | 描述 |
---|---|---|
left |
1 | Key is anchored to the left of the keyboard. |
right |
2 | Key is anchored to the right of the keyboard. |
这对应于全局属性资源符号 keyEdgeFlags
。
按键的默认高度,以像素或显示宽度的百分比表示。
可能是一个维度值,它是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。
可能是一个小数值,它是一个带有%或%p的浮点数,例如“ 14.5%
”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。
这也可能是对包含此类型值的资源(格式为“ @[package:]type:name
”)或主题属性(格式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 keyHeight
。
该图标显示在键上而不是标签上。
必须是另一个资源的引用,其形式为“ @[+][package:]type:name
”,或者其形式为“一个主题属性 ?[package:][type:]name
”。
这对应于全局属性资源符号 keyIcon
。
要在键上显示的标签。
必须是字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 keyLabel
。
按下此键时要输出的字符串。
必须是字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。
这也可能是对包含此类型值的资源(格式为“ @[package:]type:name
”)或主题属性(格式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 keyOutputText
。
按键的默认宽度(以像素为单位)或显示宽度的百分比。
可能是尺寸值,这是一个浮点数,后面跟着一个单位,例如“ 14.5sp
”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸,毫米(毫米)。
可能是一个小数值,它是一个浮点数, 14.5%
%或%p,例如“ 14.5%
”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 keyWidth
。
要在弹出式键盘中显示的字符。
必须是字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 popupCharacters
。
任何弹出式键盘的XML键盘布局。
必须是另一个资源的引用,其形式为“ @[+][package:]type:name
”,或者其形式为“一个主题属性 ?[package:][type:]name
”。
这对应于全局属性资源符号 popupKeyboard
。
int edgeFlags
指定锚定到键盘边缘的标志,用于检测刚刚超出键的边界的触摸事件。 这是一个位掩码EDGE_LEFT
, EDGE_RIGHT
, EDGE_TOP
和EDGE_BOTTOM
。
Keyboard.Key (Keyboard.Row parent)
创建一个没有属性的空键。
Parameters | |
---|---|
parent |
Keyboard.Row
|
Keyboard.Key (Resources res, Keyboard.Row parent, int x, int y, XmlResourceParser parser)
使用给定的左上角坐标创建一个键,并从XML解析器中提取其属性。
Parameters | |
---|---|
res |
Resources : resources associated with the caller's context |
parent |
Keyboard.Row : the row that this key belongs to. The row must already be attached to a Keyboard . |
x |
int : the x coordinate of the top-left |
y |
int : the y coordinate of the top-left |
parser |
XmlResourceParser : the XML parser containing the attributes for this key |
int[] getCurrentDrawableState ()
根据键的当前状态和类型返回键的可绘制状态。
Returns | |
---|---|
int[] |
the drawable state of the key. |
也可以看看:
boolean isInside (int x, int y)
检测一个点是否落在该键内。
Parameters | |
---|---|
x |
int : the x-coordinate of the point |
y |
int : the y-coordinate of the point |
Returns | |
---|---|
boolean |
whether or not the point falls inside the key. If the key is attached to an edge, it will assume that all points between the key and the edge are considered to be inside the key. |
void onReleased (boolean inside)
更改按键的按下状态。
当满足以下所有条件时,切换键的状态将被翻转:
sticky
is true
. inside
is true
. SDK_INT
is greater than LOLLIPOP_MR1
. Parameters | |
---|---|
inside |
boolean : whether the finger was released inside the key. Works only on Android M and later. See the method document for details. |
也可以看看:
int squaredDistanceFrom (int x, int y)
返回键中心和给定点之间距离的平方。
Parameters | |
---|---|
x |
int : the x-coordinate of the point |
y |
int : the y-coordinate of the point |
Returns | |
---|---|
int |
the square of the distance of the point from the center of the key |