android 两个触摸,android-MotionEvent多个触摸事件混合并相互影...

该应用程序的目的:

一个简单的应用程序,它为屏幕上识别出的每个触摸绘制一个圆圈,并跟踪触摸事件.在“高压读数” getPressure(int pointerIndex)上,圆圈的颜色将改变,半径将增加.另外,在手指触摸旁边显示带有getPointerId(intpointerIndex),x和y坐标以及压力的触摸ID.

遵循重要部分的代码片段(请原谅,这不是最好的代码;)我知道)

protected void onDraw(Canvas canvas){

//draw circle only when finger(s) is on screen and moves

if(iTouchAction == (MotionEvent.ACTION_MOVE)){

int x,y;

float pressure;

//Draw circle for every touch

for (int i = 0; i < touchEvent.getPointerCount(); i++){

x = (int)touchEvent.getX(i);

y = (int)touchEvent.getY(i);

pressure = touchEvent.getPressure(i);

//High pressure

if (pressure > 0.25){

canvas.drawCircle(x, y, z+30, pressureColor);

canvas.drawText(""+touchEvent.getPointerId(i)+" | "+x+"/"+y, x+90, y-80, touchColor);

canvas.drawText(""+pressure, x+90, y-55, pressureColor);

}else{ //normal touch event

canvas.drawCircle(x, y, z, touchColor);

canvas.drawText(""+touchEvent.getPointerId(i)+" | "+x+"/"+y, x+60, y-50, touchColor);

canvas.drawText(""+pressure, x+60, y-25, pressureColor);

}

}

}

}

问题:

测试平台是运行Android 2.1的HTC Desire.该应用程序可以正常工作,并且可以毫无问题地跟踪两个手指.但是似乎两个接触点在彼此接近时会互相干扰-好像它们“捕捉”到共享的x和y轴.有时他们甚至交换另一个触摸事件的输入坐标.另一个问题是,即使getPressure(int pointerIndex)引用了一个PointerID,两个触摸事件的压力读数也相同.

我的问题:

>我的代码仅仅是错误的吗?

> Android 2.1是否不能很好地处理触摸事件,使事情变得混乱起来?

>这是硬件问题,与1)和2)无关吗?

感谢您的回答和/或重新链接到其他线程(很抱歉,可以找到一个解决此问题的线程).

克里斯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值