当我在应用程序中添加多点触摸功能时,我试图修复代码中出现的一个问题。问题似乎来自于ACTION_POINTER_DOWN:
private float oldDist = 0;
backCard.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent me) {
switch(me.getAction()){
case MotionEvent.ACTION_DOWN:
firstX = (int) me.getX();
case MotionEvent.ACTION_POINTER_DOWN:
if(me.getPointerCount() >= 2){
oldDist = getSpacing(me);
System.out.println(oldDist);
}
break;
case MotionEvent.ACTION_MOVE:
float newDist = getSpacing(me);
if(newDist - oldDist > 200 && oldDist != 0){
System.out.println("Enabled");
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
break;
}
return true;
}
private float getSpacing(MotionEvent me){
float difx = me.getX(0) - me.getX(1);
float dify = me.getY(0) - me.getY(1);
float spacing = (float) Math.sqrt(difx*difx + dify*dify);
return spacing;
}
});当我在ACTION_POINTER_DOWN中不使用ACTION_POINTER_DOWN()条件使用它时,就会出现超出范围的错误。但是如果我使用这个条件,日志就不会显示我在代码中打印的任何内容。(当然,我用了两个手指!: ),所以这种情况永远不是真的,即使几个手指同时触摸屏幕。
我怎么才能解决呢?谢谢。
我的设备是GS3。
发布于 2013-12-18 20:47:42
使用me.getActionMasked()而不是me.getAction()
https://stackoverflow.com/questions/20667931
复制相似问题