GestureDetectorでは、callOnClick()を直接呼び出すことができます。 View.callOnClick APIにはAPIレベル15が必要です。 試してみてください。
// Create a Gesturedetector
GestureDetector mGestureDetector = new GestureDetector(context, new MyGestureDetector());
// Add a OnTouchListener into view
m_myViewer.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
return mGestureDetector.onTouchEvent(event);
}
});
private class MyGestureDetector extends GestureDetector.SimpleOnGestureListener
{
public boolean onSingleTapUp(MotionEvent e) {
// ---Call it directly---
callOnClick();
return false;
}
public void onLongPress(MotionEvent e) {
}
public boolean onDoubleTap(MotionEvent e) {
return false;
}
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
public void onShowPress(MotionEvent e) {
LogUtil.d(TAG, "onShowPress");
}
public boolean onDown(MotionEvent e) {
// Must return true to get matching events for this down event.
return true;
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, final float distanceX, float distanceY) {
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// do something
return super.onFling(e1, e2, velocityX, velocityY);
}
}
なぜあなたはonTouchとonClickが必要ですか?確かにonTouchで十分でしょう。 – JDx
[GestureDetector](http://developer.android.com/reference/android/view/GestureDetector.html)はどうですか? – keyser
@JDx「onTouchListener」からのクリックをどのように認識する必要がありますか?クリックは、少なくとも2つのタッチイベントのシーケンスであり、 'ACTION_DOWN'イベントは、後の' ACTION_UP'イベントと全く同じ位置(または少なくとも少なくとも同じビュー)で起動されます。確かに、これを実装することができ、他の解決策がない場合は私が行います。しかし、私の質問は確かに、このシナリオのための組み込みのソリューションがあるかどうかです? – theV0ID