`
woshizn
  • 浏览: 210231 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

BlackBerry按键捕捉分析

阅读更多

转载来自 : http://mdev.cc SinFrancis

 

有JE的朋友问我关于BB上捕捉按键的一些问题,总结了一下,写了此文章。

 

BB上的所有UI视图的父类是一个叫做Field的类,此类中有keyDown  keyChar等相关的方法。

那么BB上并不能像Android上可以直接对某个组件进行set监听事件的方法,那么我们应该怎么样做呢?

我们可以重写这些关于key的方法。

 

 

那么分析一下这些方法如何运行的:

BB上的最外层的组件是Screen,此组件中可以包含Manager 、Field等子类,那么当按下某个键的时候,系统会捕获到

这个按键的值,然后传递给Screen,Screen的决定是否要处理此消息,如果处理的话,就不再传递给子组件处理,如果不处理,那么就会交给子组件中当前聚焦的那个组件来处理,写的比较难懂。。。

 

 

举个例子:

我们在Screen类中重写了 keyDown方法,例如:

 

protected boolean keyDown(int keycode, int time) {
		System.out.println("Screen1.keyDown():"+keycode);
		return true;
	}

 此方法返回true,那么表示当前key事件由Screen处理,不会再往下传递给子组件。如果返回false则反之。

 

如果Screen或者父组重写了捕捉key事件的方法,并且返回true,那么子组件是接收不到消息的。

 

关于keyDown和keyChar两个方法。keyDown优先于keyChar,如果一个组件中这个两个方法同时被重写,并且keyDown返回了true,那么keyChar是不能被调用的。

 

请看代码:

 

import net.rim.device.api.ui.Keypad;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ActiveRichTextField;
import net.rim.device.api.ui.container.MainScreen;


/**
 * @site http://androidos.cc http://mdev.cc
 * @author SinFrancis Wong
 * @since 2009-12-09
 *
 */
public class Main extends UiApplication {
	public Main() {
		pushScreen(new Screen1());
	}

	public static void main(String[] args) {
		Main m = new Main();
		m.enterEventDispatcher();
	}
}

class Screen1 extends MainScreen {
	ActiveRichTextField f;

	public Screen1() {
		f = new ActiveRichTextField("catch key....") {
			protected boolean keyChar(char c, int status, int time) {
				
				//keyChar方法似乎捕捉不到menu按键事件,可以用keyDown捕捉
				System.out.println(".keyChar():"+c);
				if (c == Keypad.KEY_BACKSPACE) {
					//捕捉Back space键
					f.setText("catch the KEY_BACKSPACE key...");
					return true;
				} else if (c == Keypad.KEY_ESCAPE) {
					//捕捉back键
					f.setText("catch the BACK key...");
					return true;
				} else {
					f.setText("catch other key value is  :" + c);
					return true;
				}
			}
			
			protected boolean keyDown(int keycode, int time) {
				if (keycode == 268566528) {//menu的int值
					f.setText("catch the MENU  key...");
				}
				System.out.println(".keyDown():"+keycode);
				return false;
			}
		};
		add(f);
	}
	
	protected boolean keyDown(int keycode, int time) {
		System.out.println("Screen1.keyDown():"+keycode);
		return false;//交给子组件处理
	}
}
 

 

 

以上代码在BB 9500机器上测试是正常捕捉按键事件的。

如果将最后的一段keyDown代码返回true,点击是没有任何反应得(在debug模式下能看到打印的消息),因为消息没有往下传递,全部被Screen消耗掉了。

 

protected boolean keyDown(int keycode, int time) {
		System.out.println("Screen1.keyDown():"+keycode);
		return true;//交给子组件处理
	}

 

 

 

 

分享到:
评论

相关推荐

    GPIO-KEY_LED_STM32F103_黑莓key1按键灯_按键_

    标题中的"GPIO-KEY_LED_STM32F103_黑莓key1按键灯_按键_"表明我们将在STM32F103微控制器上使用GPIO(General Purpose Input/Output)接口来处理按键(KEY)输入和LED灯输出。这个项目特别关注的是通过黑莓key1按键来...

    老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型.zip

    老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型,格式为cod , alx,jad等格式;;怀旧经典,软件清单如下 Twitter70.zip WacaiBlackberry.zip [BerryCN.com_DZH_v5.18] XECurrency-...

    黑莓blackberry Anyview

    黑莓blackberry阅读工具 支持格式txt

    7290 bb blackberry黑莓

    7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓...

    黑莓桌面管理器 BlackBerry Desktop Manager 5.0.1 B73多国语言版

    ### 黑莓桌面管理器 BlackBerry Desktop Manager 5.0.1 B73多国语言版 #### 一、概述 黑莓桌面管理器(BlackBerry Desktop Manager)是为黑莓设备设计的一款桌面软件,旨在帮助用户更高效地管理其黑莓手机上的数据...

    黑莓替代滚轮的软件

    这个物理滚轮是黑莓手机上的一个标志性设计,它允许用户在菜单、联系人、邮件等应用之间快速浏览和选择,而无需反复触屏或按键。然而,这种机械结构随着时间的推移可能会出现磨损,导致灵敏度下降或完全失效。 为了...

    黑莓UI指导 Blackberry UI Guidelines

    【黑莓UI指导 Blackberry UI Guidelines】是一份关于如何为黑莓手机开发用户界面的指南,旨在帮助开发者创建更符合黑莓用户习惯的界面。该文档由非开发者个人翻译,虽然可能存在翻译不准确之处,但仍能提供基本的...

    黑莓手机usb驱动(BlackBerry USB Driver)

    黑莓usb驱动是一款黑莓手机专用驱动,已经装了桌面管理器的电脑就不需要安装了。没有装桌面管理器,又想访问TF卡,装这个就可以了。驱动介绍相信大家在第一次使用黑莓手机连接电脑的时候都出现了没有反应的问题了,...

    blackberry chinese黑莓 中文

    【黑莓中文输入法详解】 黑莓手机,以其独特的全键盘设计和强大的商务功能,在早期深受用户喜爱。本文将详细讲解如何在黑莓设备上设置和使用中文输入法。 1. **输入区域设置(Input Locale)** 黑莓手机支持多...

    黑莓blackberry8700g游戏软件经典集合

    黑莓Blackberry 8700g是一款经典的智能手机,它在2006年推出,以其独特的全键盘和优秀的电子邮件功能赢得了商务人士的青睐。这款手机不仅在通信和办公方面表现出色,还拥有一定的娱乐功能,包括游戏和各种实用软件。...

    黑莓版QQ_1.0.2.95_blackberry_beta

    《黑莓版QQ_1.0.2.95_blackberry_beta》应用程序的发布,标志着即时通讯软件在黑莓平台上的重要里程碑。作为一款针对黑莓手机用户量身打造的社交软件,它不仅提供了QQ这一流行即时通讯工具的核心功能,还针对黑莓...

    黑莓软件大全 黑莓软件集合下载 2011.3.16

    【标题】"黑莓软件大全 黑莓软件集合下载 2011.3.16" 提供的是一份2011年3月16日更新的黑莓手机软件资源集合,其中包含了适用于黑莓操作系统的各种应用程序。这个集合可能是一个方便用户一次性获取多个黑莓软件的...

    黑莓桌面管理器4.2

    **黑莓桌面管理器4.2详解** 黑莓桌面管理器4.2是一款专为Blackberry OS 5.0及以下版本设计的管理工具,它为用户提供了与黑莓手机进行高效交互的平台。这款软件以其简洁的界面和易于操作的特点,深受黑莓用户的喜爱...

    qq-blackberry.zip 黑莓QQ

    【标题】"qq-blackberry.zip 黑莓QQ" 指的是一个专为黑莓手机设计的QQ应用程序的压缩包。黑莓QQ是腾讯公司针对黑莓操作系统的智能手机开发的一款即时通讯软件,允许用户在黑莓设备上实现与PC版QQ类似的聊天、文件...

    BlackBerry(黑莓)开发入门教程最新版

    **BlackBerry(黑莓)开发入门教程最新版** 在移动应用开发领域,BlackBerry(黑莓)曾经占据一席之地,尤其在商务用户中颇受欢迎。尽管近年来市场份额有所下降,但仍有开发者对其平台感兴趣,尤其是对于历史项目...

    Blackberry黑莓手机一键WIPE程序V1.0版

    Blackberry黑莓手机一键WIPE程序V1.0版是一款专为Blackberry用户设计的实用工具,主要用于清理和重置设备。在深入了解这个程序之前,我们先来了解一下什么是Blackberry手机,以及WIPE操作在手机维护中的作用。 ...

    黑莓(BlackBerry)开发从入门到精通

    3. **用户界面设计**:黑莓设备通常具有物理键盘,因此在设计UI时要考虑触控与按键操作的兼容性。使用BlackBerry提供的GUI组件,如Manager类和Field类,可以创建适应不同屏幕尺寸和方向的用户界面。 4. **网络编程*...

    黑莓手机品牌战略分析-精品课件.pptx

    【黑莓手机品牌战略分析】 黑莓手机,源自加拿大RIM公司,以其独特的QWERTY全键盘设计和Push Mail技术赢得了全球用户的青睐。黑莓手机最初被设计为无线手持邮件解决方案,但随着时间的推移,它逐渐演变为集通信、...

Global site tag (gtag.js) - Google Analytics