BlackBerry 应用程序开发者指南 第一卷:基础-第3章 创建用户接口(UI)
3
第3章 创建用户接口(UI)
UI API
显示UI组件。
管理UI组件
创建客户定制的UI组件
操作图片
使用图像对象画图
监听UI对象的改变
UI API
当你为BlackBerry设备编写应用程序时,使用下面2组UI API的一组:
MIDP UI API (javax.microedition.lcdui包)
BlackBerry UI API (net.rim.device.api.ui包)
如果你正在编写一个在任何MIDP兼容设备上运行的应用程序,请使用MIDP UI API.如果你正在编写专门运行在BlackBerry设备上的应用程序,那就使用BlackBerry UI API吧。BlackBerry API提供了访问BlackBerry设备的特定特性的功能,并且也允许更成熟的UI布局(layout)和交互。
注:不要在同一个程序里既使用MIDP UI API,又使用BlackBerry UI API,否则会抛出异常。在应用程序中,UI框架支持一中类型的UI对象。
显示UI组件
显示屏幕(Screen)
UI 的主要结构是Screen。一个应用程序一次只能显示一个屏幕。 注:不要使用Screen对象来输入文本。Screen对象没有明确实现此功能,它需要复杂的输入方法,例如国际化的键盘和7100系列的设备。为实现无缝得集成不同输入方法,扩展Field或者其任一子类。参看53页“创建定制的域”得到更多信息。
显示栈(Stack)
Screen对象在一个一组有序的Screen显示栈里得到维护。在栈顶的Screen对象是显示给用户的活动Screen。当应用程序显示一个Screen时,它将这个Screen压入到栈顶。当关闭一个Screen,将这个Screen从栈里移出,然后显示栈里的下一个Screen,如果必要会重绘它。
注:每个Screen在栈里只出现一次。如果同一个Screen压入到栈不止一次,VM会抛出一个运行时异常。当用户完成和Screen交互,应用程序必须将Screen从栈里移出,以致内存不必再用。不要在同一时间里使用多个Screen,因为每个Screen使用独立的线程。
Screen的类型
在多数情况下,创建一个Screen最有效的方法是创建一个扩展Screen或其任一子类,FullScreen或MainScreen的类。
类
描述
Screen
使用Screen类定义一个管理器布局Screen上的UI组件,并且使用在超类Field定义的常数的样式(Style)定义一明确的Screen。
FullScreen
缺省的,一个FullScreen包含单个垂直[1]的域管理器(Field Manager)。使用一个FullScreen提供了一个空的Screen,在这个空的Screen上,你可以增加UI组件到这个标准的垂直布局里。如果需要另外类型的布局,例如水平的或对角的,使用一个Screen类,并且在里面增加一个管理器。
MainScreen
MainScreen类提供常见的标准BlackBerry应用程序常见特性。对你的应用程序的第一个Screen,使用一个MainScreen对象来保持和其他BlackBerry应用程序的统一。MainScreen提供一下的UI组件:
l Screen标题的缺省位置,标题后的一个SeperatorField
l 一个包含在VerticalManager里的滚动的主界面。
l 有一个Close菜单项的菜单。
l 当用户点击Close菜单项或者按Escape键时缺省的关闭操作。
响应用户交互
BlackBerry API提供一个和Java标准版本类似的事件监听框架。特殊的,2个监听接口使程序接收和响应用户交互:TrackWheelListener和KeyboardListnener。Screen类和其子类都实现了这些方法。
提供screen导航(navigation)
BlackBerry应用程序为用户提供一个菜单来完成操作。避免使用按钮(Button)或其他占据Screen空间的UI组件。
注:按滑轮访问菜单。
当创建一个FullScreen或Screen,在构造子里指明DEFAULT_MENU和DEFAULT_CLOSE参数来提供缺省的导航。
FullScreen fullScreen = new FullScreen(DEFAULT_MENU | DEFAULT_CLOSE);
参数
描述
DEFAULT_MENU
这个参数增加一个缺省的菜单,它包含了不同的菜单项,这依赖域用户的上下文环境。例如,如果一个EditField获得焦点,将显示Cut,Copy和Paste菜单项。所有已选择的域提供Select和Cancel Selection菜单项。
DEFAULT_CLOSE
这个参数增加一个缺省行为的Close菜单项到菜单,当用户点击Close菜单项或者按Escapes按钮,如果Screen上的任何东西改变,一个确认的对话框将会出现。如果这个Screen是栈里的唯一一个Screen,应用程序将关闭。
当创建一个MainScreen时,缺省的导航会自动提供。
增加菜单项
创建MenuItem对象。
private MenuItem viewItem = new MenuItem("View Message", 100, 10) {
public void run() {
Dialog.inform("This [...]
Confach发表于 April 22, 2008 9:42 pm | 留言 |文档
