该应用程序的目的:
一个简单的应用程序,它为屏幕上识别出的每个触摸绘制一个圆圈,并跟踪触摸事件.在“高压读数” 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)无关吗?
感谢您的回答和/或重新链接到其他线程(很抱歉,可以找到一个解决此问题的线程).
克里斯