Android的OnTouchListener
本身并不能直接處理多點同時觸摸。OnTouchListener
主要用于處理單個點的觸摸事件,包括ACTION_DOWN
、ACTION_MOVE
和ACTION_UP
等。
如果你需要處理多點觸摸,可以使用View
的OnTouchEvent
方法。OnTouchEvent
方法會傳遞一個MotionEvent
對象,你可以通過分析這個對象的getActionIndex()
和getActionMask()
方法來判斷當前觸摸點的狀態以及觸摸點的數量。
以下是一個簡單的示例,展示了如何使用OnTouchEvent
處理多點觸摸:
public class MultiTouchView extends View {
private int touchCount = 0;
public MultiTouchView(Context context) {
super(context);
}
public MultiTouchView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MultiTouchView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
touchCount++;
break;
case MotionEvent.ACTION_MOVE:
// 處理多點移動事件
break;
case MotionEvent.ACTION_UP:
touchCount--;
break;
case MotionEvent.ACTION_POINTER_DOWN:
touchCount++;
break;
case MotionEvent.ACTION_POINTER_UP:
touchCount--;
break;
}
if (touchCount > 1) {
// 處理多點觸摸事件
}
return true;
}
}
在這個示例中,我們通過監聽ACTION_DOWN
、ACTION_MOVE
、ACTION_UP
、ACTION_POINTER_DOWN
和ACTION_POINTER_UP
事件來判斷觸摸點的數量。當觸摸點數量大于1時,我們可以認為是在處理多點觸摸事件。