为Canvas和CustomItem调用虚拟键盘
文章信息
Contents |
Introduction
Nokia SDK for Java 2.0版本主要是针对全触屏设备,没有了键盘,所以提供了虚拟键盘,供用户输入信息。
虚拟键盘
虚拟键盘相关API 允许MIDlet为Canvas以及基于Canvas的组件启动一个虚拟键盘,比如说 GameCanvas, FullCanvas, 以及处于竖屏状态的CustomItem.
MIDlet可以使用虚拟键盘相关的API实现:
- 启动虚拟键盘
- 监听虚拟键盘的隐藏以及显示,获取事件通知
- 获取当前虚拟键盘的可见性相关信息
- 当虚拟键盘可见性改变时,禁止sizeChanged函数的触发
虚拟键盘API定义了如下虚拟键盘种类:
- CUSTOM_KEYBOARD: 这是一个由MIDlet通过API来启动,以及控制的虚拟键盘,它是有平台系统所提供的。
- SYSTEM_KEYBOARD: 这是一个由系统启动,以及控制的,对于 高级UI组件,比如TextEditor,TextField 来说,使用就是这种类型。 并且这种类型的虚拟键盘是不够通过API来控制的。
虚拟键盘API通常用于需要输入的 low-level UI 组件。
相关API
虚拟键盘相关API主要有下面3个类及接口:
| 名称 | 描述 |
|---|---|
| CustomKeyboardControl | 用来启动,以及提供对虚拟键盘的控制 |
| KeyboardVisibilityListener | 虚拟键盘 显示,隐藏 的监听接口 |
| VirtualKeyboard | 通过该类来创建一个CustomKeyboardControl,以及获取当前虚拟键盘的相关信息,隐藏,显示默认打开键盘的命令(画布等中)。 你还可以使用该类,当虚拟键盘隐藏或打开时,屏蔽sizeChanged函数的调用。 |
设备兼容性
需要注意的是这些API仅仅在支持 Java Runtime 2.0.0的设备中才可以使用的,使用时需要注意判断当前设别是否支持。
API的使用实例
The following code snippet shows how to launch, control, and hide a virtual keyboard.
下面代码演示了如果使用这些API来启动,控制以及隐藏一个虚拟键盘。
try {
// Get the CustomKeyboardControl singleton instance
CustomKeyboardControl vkbControl = VirtualKeyboard.getCustomKeyboardControl();
// Launch a virtual keyboard of the specified type and in the specified mode
vkbControl.launch(VirtualKeyboard.VKB_TYPE_ITUT, VirtualKeyboard.VKB_MODE_DEFAULT);
// ...
// Change the mode to numeric
vkbControl.setKeyboardMode(VirtualKeyboard.VKB_MODE_NUMERIC);
// ...
// Hide the virtual keyboard
vkbControl.dismiss();
} catch (IllegalArgumentException iae) {
// Handle the exception
} catch (IllegalStateException ise) {
// Handle the exception
}
从上面的代码中可以看到,你可以在启动虚拟键盘时,指定它的类型(VKB_TYPE_ITUT 等)或者指定他的模式(数字模式,字母模式 等). 当然你也可以不指定,这时将会使用默认值。 对于已经启动的虚拟键盘,你也可以使用setKeyboardType 来重置它的类型。
下面的代码演示了如何实现虚拟键盘的监听接口,以便获取虚拟键盘的启动,隐藏事件通知。
class VirtualKeyboardListener implements KeyboardVisiblityListener {
int myDisplayHeight;
VirtualKeyboardListener() {
// Set the current class as KeyboardVisiblityListener
VirtualKeyboard.setVisibilityListener(this);
// Specify myDisplayHeight
// ...
}
// Called when a virtual keyboard is launched (shown)
void showNotify(int keyboardCategory) {
// Determine the height left for the MIDlet UI to use
int visibleHeight;
try {
visibleHeight = myDisplayHeight - VirtualKeyboard.getHeight();
} catch (IllegalStateException ise) {
// Handle the exception
}
// Refresh the screen
// ...
}
// Called when a virtual keyboard is dismissed (hidden)
void hideNotify(int keyboardCategory) {
// The MIDlet UI can use the full height available
int visibleHeight = myDisplayHeight;
// Refresh the screen
// ...
}
}


(no comments yet)