boolean onDoubleTap(MotionEvent e)
解釋:輕按兩下的第二下Touch down時觸發
boolean onDoubleTapEvent(MotionEvent e)
解釋:輕按兩下的第二下Touch down和up都會觸發,可用e.getAction()區分。
boolean onDown(MotionEvent e)
解釋:Touch down時觸發
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解釋:Touch了滑動一點距離後,up時觸發。
void onLongPress(MotionEvent e)
解釋:Touch了不移動一直Touch down時觸發
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解釋:Touch了滑動時觸發。
void onShowPress(MotionEvent e)
解釋:Touch了還沒有滑動時觸發
(與onDown,onLongPress比較
onDown隻要Touch down一定立刻觸發。
而Touchdown後過一會沒有滑動先觸發onShowPress再是onLongPress。
是以Touchdown後一直不滑動,onDown->onShowPress->onLongPress這個順序觸發。
boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
解釋:上面這兩個函數都是在touch down後又沒有滑動(onScroll),又沒有長按(onLongPress),然後Touchup時觸發。
點選一下非常快的(不滑動)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
點選一下稍微慢點的(不滑動)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
使用GestureDetector需要在View中重寫onTouchEvent事件,例如:
GestureDetector mGesture = null;
@Override
public boolean onTouch(View v, MotionEvent event)
{
// TODO Auto-generated method stub
return mGesture.onTouchEvent(event);
}
詳細的測試例子如下:
package com.jiubang.android.gesturetest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
public class GestureActivity extends Activity
implements OnTouchListener
{
private Button mButton = null;
GestureDetector mGesture = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("TEST", "onCreate");
mButton = (Button)findViewById(R.id.button1);
mButton.setOnTouchListener(this);
mGesture = new GestureDetector(this, new GestureListener());
class GestureListener extends SimpleOnGestureListener
@Override
public boolean onDoubleTap(MotionEvent e)
{
// TODO Auto-generated method stub
Log.i("TEST", "onDoubleTap");
return super.onDoubleTap(e);
}
public boolean onDown(MotionEvent e)
Log.i("TEST", "onDown");
return super.onDown(e);
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
Log.i("TEST", "onFling:velocityX = " + velocityX + " velocityY" + velocityY);
return super.onFling(e1, e2, velocityX, velocityY);
public void onLongPress(MotionEvent e)
Log.i("TEST", "onLongPress");
super.onLongPress(e);
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY)
Log.i("TEST", "onScroll:distanceX = " + distanceX + " distanceY = " + distanceY);
return super.onScroll(e1, e2, distanceX, distanceY);
public boolean onSingleTapUp(MotionEvent e)
Log.i("TEST", "onSingleTapUp");
return super.onSingleTapUp(e);
}
//以上部分内容選自網絡
本文轉自 一點點征服 部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/5290929.html,如需轉載請自行聯系原作者