안녕 나는이 손가락이 화면에 접촉 할 때 감지하는 것을 시도하고있다 :안드로이드 터치 이벤트 포인터 아래
case MotionEvent.ACTION_POINTER_2_DOWN: {
twoFing=true;
return true;
}
문제가 있다는 것입니다 :
public static final int ACTION_POINTER_2_DOWN
이 depreceted됩니다의 문서는 말한다 :
* getActionMasked()에 대한 상수 : 기본이 아닌 포인터가 중단되었습니다. getActionIndex()를 사용하여 변경된 포인터의 인덱스를 검색합니다. 인덱스는 *
. getAction에 의해 반환 된 마스킹 작업()의 ACTION_POINTER_INDEX_MASK 비트 인코딩됩니다하지만 난 그것을 사용하는 방법을 이해하지 않습니다 ... 어떻게 2 포인터가 있음을 감지 할 수 있을까? ActionUP 아래는 항상 내가덕분에 많은
편집을 getPointerIndex()를 시도하는 경우 하나의 포인터가 말한다 : 나는이 문제에 대한 자세한 명확하게하기 위해 여기에 전체 코드를 게시 할 수 있습니다. 내 코드가 작동하지만 ACTION_POINTER_2_DOWN은 사용되지 않는 값이므로 다른 것으로 바꿔야하지만 어떻게해야할지 모르겠다.
@SuppressWarnings("deprecation")
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN : {
Log.i(TAG, "Action Down");
downX = event.getX(0);
downY = event.getY(0);
return true;
}
case MotionEvent.ACTION_UP: {
upX = event.getX(0);
upY = event.getY(0);
float deltaX = downX - upX;
float deltaY = downY - upY;
Log.i(TAG, "Action UP deltaX="+deltaX+", deltaY="+deltaY);
// swipe vertical?
if(Math.abs(deltaY) > MIN_DISTANCE && twoFing){
twoFing=false;
// top or down
if(deltaY < 0)
{
if(slide.zoom==1)
slide.zoom=0;
Log.i(TAG, "Going Down zooming in");
//return true;
}
if((deltaY > 0))
{
if(slide.zoom==0)
slide.zoom=1;
Log.i(TAG, "Going up zoomig out");
//return true;
}
return true;
}
// swipe horizontal?
if(Math.abs(deltaX) > MIN_DISTANCE && !twoFing){
// left or right
if(deltaX < 0) { this.slideToTheLeft(); return true; }
if(deltaX > 0) { this.slideToTheRight(); return true; }
return true;
}
return false;
}
case MotionEvent.ACTION_POINTER_2_DOWN: {
twoFing=true; //inform that the touch was made with 2 fingers
Log.i(TAG, "Action Second pointer down");
return true;
}
}
return false;
은} 당신은 index
에 대해 서로 다른 값을 getPointerId(index)
와
정확한 데이터가 필요하지 않으므로 첫 번째 포인터 (0)에서만 데이터를 가져옵니다. 두 번째 손가락 (또한 MotionEvent.ACTION_POINTER_2_DOWN :)이 눌린 것을 감지 할 필요가 있습니다. 그런 다음 변수를 설정 한 다음 두 손가락 또는 1이 있으면 내 논리를 감지하여 조치를 취합니다. 그러나 ACTION_POINTER_2를 무언가로 대체해야합니다. else ..... – vallllll
'Case MotionEvent.ACTION_DOWN'을 트리거해야하고, PointerId를 검색하는지 확인해야합니다. 기기가 실제로 멀티 터치를 지원합니까? – Hartok