package com.example.xxaa;
import android.util.Log;
import android.view.MotionEvent;
import android.view.GestureDetector.SimpleOnGestureListener;
public class MyGesture extends SimpleOnGestureListener {
private final String TAG = "MyGesture";
@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnDoubleTap");
return super.onDoubleTap(e);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnDown");
return super.onDown(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
showTag("---OnFling");
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
showTag("---OnScroll");
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnLongPress");
super.onLongPress(e);
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnShowPress");
super.onShowPress(e);
}
/*用于显示TAG*/
public void showTag(String msg){
Log.e(TAG, msg);
}
}
在Activity中调用手势识别的方法:
package com.example.xxaa;
在Activity中调用手势识别的方法:
package com.example.xxaa;
import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MotionEvent;
public class MainActivity extends Activity {
private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector = new GestureDetector(new MyGesture());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return gestureDetector.onTouchEvent(event);
}
}
- package com.sun.gesturetest;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.view.GestureDetector;
- import android.view.MotionEvent;
- import android.view.View;
- public class GestureView extends View {
- private GestureDetector mDetector;
- public GestureView(Context context, AttributeSet set) {
- super(context, set);
- mDetector = new GestureDetector(context, new MyGestureListener());
- setLongClickable(true);
- this.setOnTouchListener(new OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- return mDetector.onTouchEvent(event);
- }
- });
- }
- } 在View中设置手势有两点需要注意:
1:View必须设置longClickable为true,否则手势识别无法正确工作,只会返回Down, Show, Long三种手势。
2:必须在View的onTouchListener中调用手势识别,而不能像Activity一样重载onTouchEvent,否则同样手势识别无法正确工作。