내 앱에 멀티 터치 기능을 추가 할 때 코드에 나타나는 문제를 해결하려고합니다. 문제는 ACTION_POINTER_DOWN에서 온 것 같다 내가 ACTION_POINTER_DOWN에서 getPointerCount() 조건없이 사용할 때, 나는 범위 부족 오류가멀티 터치 - PointerIndex 범위를 벗어났습니다.
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;
}
});
. 그러나 조건을 사용하면 로그에 코드에 인쇄 된 내용이 표시되지 않습니다. (물론 두 손가락을 사용합니다! :)), 여러 손가락이 동시에 화면을 터치하더라도 조건은 사실이 아닙니다.
어떻게 해결할 수 있습니까? 고맙습니다.
내 장치는 GS3입니다. 나는 ACTION_DOWN 모든 손가락에 대해 한 번 전달 생각하지 않습니다
. 서로의 밀리 초 내로 손가락을 똑같은 순간에 정확하게내는 것은 거의 불가능합니다. ACTION_MOVE에 중점을 두는 것이 좋습니다. – 323go