터치 이벤트의 마스킹과 관련된 몇 가지 작은 질문이 있습니다. 나는 여기에서 그리고 다른 곳에서 많은 것을 읽었지만, 여전히 약간 혼동 스럽다.Android 멀티 터치 및 getActionMasked()
1)가
2) 위의 두 명령 이상 그 event.getAction()
혼자 모든 정보 등을 제공합니다 삼성 S2와 HTC 욕망)에있을 표시 (event.getAction() & MotionEvent.ACTION_MASK
같은 event.getActionMasked()
인가, 아니면 다른 .
3) 어디서 만지고 어떤 pointerId로 포인터가 사용되는지 또는 포인터가 사용 중이 아닌지 간단하게 말하는 코드 조각을 작성했습니다 (현재 두 번만 쓴다). 위에서 언급 한 장치에서 올바르게 작동하는 것으로 보이지만 일부 장치는 절대적으로 올바르게 수행되지 않으면 매우 다르게 작동 할 수 있습니다. 따라서 다음 내용이 정확하고 모든 장치에서 작동하는지 궁금합니다.
boolean pointer0down=false, pointer1down=false;
String st="", str0 ="", str1 ="";
public boolean onTouchEvent(MotionEvent event)
{
if (event.getActionMasked()==MotionEvent.ACTION_UP
||event.getActionMasked()==MotionEvent.ACTION_POINTER_UP
||event.getActionMasked()==MotionEvent.ACTION_CANCEL)
{
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==0)
pointer0down=false;
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==1)
pointer1down=false;
}
if (event.getActionMasked()==MotionEvent.ACTION_DOWN
||event.getActionMasked()==MotionEvent.ACTION_POINTER_DOWN)
{
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==0)
pointer0down=true;
if (event.getPointerId((event.getActionIndex()& MotionEvent.ACTION_MASK))==1)
pointer1down=true;
}
if (pointer0down)
str0="\tx: " + event.getX(0) + "\ty: "+event.getY(0);
else
str0="\tNot down";
if (pointer1down)
str1="\tx: " + event.getX(1) + "\ty: "+event.getY(1);
else
str1="\tNot down";
st="pointer0:"+str0+"\npointer1:"+str1;
return true;
}
뛰어난 설명! – George