你好我想,當兩個手指觸摸屏幕來檢測:Android的觸摸事件指針向下
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;
}
我只從第一個指針(0)獲取數據,因爲我不需要精確的數據。我只需要檢測到第二個手指也被按下(case MotionEvent.ACTION_POINTER_2_DOWN :),然後我設置了一個變量,然後在動作上我的邏輯檢測是否有2個手指或1,但我需要替換ACTION_POINTER_2的東西其他..... – vallllll 2012-07-24 14:21:58
我很確定你必須觸發'case MotionEvent.ACTION_DOWN',然後檢查檢索PointerId。 您的設備是否真的支持多點觸控? – Hartok 2012-07-24 14:42:17