今天好好研究了一下MIDP2.0触摸屏的实现方法,把心得记下来,虽然还没有真机测试,不过模拟器上可以正常使用已经感觉是一个进步了~~呵呵~~
首先,设置模拟器:在你的WTK目录下的/WTK22/wtklib/devices/DefaultColorPhone/DefaultColorPhone.properties
的文件中有一行touch_screen=false,把它改成true就可以了。
这个时候,运行WTK下默认彩屏手机模拟器的时候就会看到,鼠标移动到屏幕界面会出现一个十字的指针了!这说明模拟器已经搞定了 :)
MIDP2.0对于触摸屏方法有3个
1.pointerDragged(int x, int y) 触摸屏拖拽事件(暂时还没研究)
2.pointerPressed(int x, int y) 触摸屏按压
3.pointerReleased(int x, int y) 触摸屏释放
pointerPressed(int x, int y)当用户按下触摸屏的时候会自动调用这个方法x,y就是当前压下的坐标
pointerReleased(int x, int y)和pointerPressed(int x, int y)类似相应触摸屏释放事件
下面是一个简单的例子实现相应屏幕左下和右下的两个按钮的触摸事件
//声明两个变量记录触摸屏当前按下的坐标
int px = -1,py = -1;
//屏幕宽度和高度
int CANVASWIDTH = getWidth();int CANVASHEIGHT = getHeight();
//覆盖pointerPressed和pointerReleased方法
protected void pointerPressed(int x, int y) {
px = x;
py = y;
}
protected void pointerReleased(int x, int y) {
px = -1;
py = -1;
}
//判断触摸是否在指定区域(左下按钮区域,右下按钮区域)CMD_WIDTH为按钮宽度CMD_HEIGHT为按钮高度
/** 触摸屏左键 */
private boolean isKey_Left() {
if (!SrCanvas) {
if (px < CMD_WIDTH && px > 0) {
if (py < CANVASHEIGHT && py > CANVASHEIGHT - CMD_HEIGHT) {
return true;
}
}
}
return false;
}
/** 触摸屏右键 */
private boolean isKey_Right() {
if (!SrCanvas) {
if (px > CANVASWIDTH - CMD_WIDTH && px < CANVASWIDTH) {
if (py < CANVASHEIGHT && py > CANVASHEIGHT - CMD_HEIGHT) {
return true;
}
}
}
return false;
}