Android1.5から、android.viewパッケージにGestureDetector.OnDoubleTapListenerインターフェースが追加されています。
このインターフェースを使用すると、ダブルタップ(=マウスでいうところのダブルクリック)を簡単に検出できます。
↓のような感じ。
public class GestureTestActivity extends Activity implements
GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener {
GestureDetector mGestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mGestureDetector = new GestureDetector(this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (mGestureDetector.onTouchEvent(event)) {
return true;
}
return super.onTouchEvent(event);
}
...省略...
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.v("Test", "onDoubleTap()");
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
Log.v("Test", "onDoubleTapEvent()");
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.v("Test", "onSingleTapConfirmed()");
return false;
}
}
Android 1.1以前でダブルタップを検出するコードを書いたことがある人にしか伝わらないかもしれなのですが、
シングルタップのAPIのみでダブルタップ検出を行うのは、結構大変だったのです。。。
マイナーネタであり、あまり知られていない?ようですが、コーディングが楽になるのでポストしておきます。