Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

为Canvas和CustomItem调用虚拟键盘

From Wiki
Jump to: navigation, search
WP Metro Icon Chinese.png
Article Metadata

测试基于
SDK: Nokia SDK for Java 2.0

兼容于
文章
Amazing1100 在 13 Jul 2012 创建
最后由 hamishwillee 在 23 Oct 2013 编辑

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
// ...
 
}
 
}

相关链接

This page was last modified on 23 October 2013, at 05:24.
174 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×