onFling
の方法で2本指スワイプを実装してみSimpleOnGestureListener
ました。SimpleOnGestureListener
ただし、これは2本の指でのタッチをサポートしていないことがわかりました。
どうすれば解決できますか?
MotionEvent.ACTION_POINTER_DOWN
次のように OnTouchListener を使用してみることができます。
button.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent motionEvent) {
int action = motionEvent.getAction();
switch(action & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_POINTER_DOWN:
Toast.makeText(MyActivity.this, " Two Fingers Tapped Once. Yeeeyy :)", 0).show();
// set the mTwoFingersTapped flag to TRUE when we tap with 2 fingers at once
mTwoFingersTapped = true;
break;
}
return false;
}
});
これは、その方法を説明するチュートリアルです。
少し前に、1/マルチフィンガースワイプを非常に簡単に実装できるライブラリを作成しました。
API の詳細なドキュメントはこちらにあります 。サンプル実装はこちらにあります。
見てほしい部分は
ImageView mv = (ImageView) findViewById(R.id.myview);
final TextView grtv = (TextView) findViewById(R.id.gestureResultTextView);
SimpleFingerGestures.DEBUG = true;
SimpleFingerGestures.CONSUME_TOUCH_EVENTS = true;
SimpleFingerGestures sfg = new SimpleFingerGestures();
sfg.setOnFingerGestureListener(new SimpleFingerGestures.OnFingerGestureListener() {
@Override
public boolean onSwipeUp(int fingers, long gestureDuration) {
grtv.setText("swiped " + fingers + " up");
return false;
}
@Override
public boolean onSwipeDown(int fingers, long gestureDuration) {
grtv.setText("swiped " + fingers + " down");
return false;
}
@Override
public boolean onSwipeLeft(int fingers, long gestureDuration) {
grtv.setText("swiped " + fingers + " left");
return false;
}
@Override
public boolean onSwipeRight(int fingers, long gestureDuration) {
grtv.setText("swiped " + fingers + " right");
return false;
}
@Override
public boolean onPinch(int fingers, long gestureDuration) {
grtv.setText("pinch");
return false;
}
@Override
public boolean onUnpinch(int fingers, long gestureDuration) {
grtv.setText("unpinch");
return false;
}
});
mv.setOnTouchListener(sfg);