一、创建手势侦听对象
public class MyGestureListener extends SimpleOnGestureListener {
private Context mContext;
private int mWith;//屏幕宽度
public MyGestureListener(Context context, int width) {
mContext = context;
mWith = width;
}
@Override
// 按下触摸屏按下时立刻触发
public boolean onDown(MotionEvent e) {
return false;
}
// 短按,触摸屏按下片刻后抬起,会触发这个手势,如果迅速抬起则不会
@Override
public void onShowPress(MotionEvent e) {
}
// 释放,手指离开触摸屏时触发(长按、滚动、滑动时,不会触发这个手势)
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
// 滑动,按下后滑动
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
// 长按,触摸屏按下后既不抬起也不移动,过一段时间后触发
@Override
public void onLongPress(MotionEvent e) {
}
// 滑动,触摸屏按下后快速移动并抬起,会先触发滚动手势,跟着触发一个滑动手势
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float x = e2.getX() - e1.getX();
float y = e2.getY() - e1.getY();
float x_limit = mWith / 4;//滑动屏幕1/4
float x_abs = Math.abs(x);
float y_abs = Math.abs(y);
if (x_abs >= y_abs) {
if (x > x_limit || x < -x_limit) {
if (x > 0) {
Toast.makeText(mContext, "滑动了", Toast.LENGTH_SHORT).show();
}
}
}
return true;
}
// 双击,手指在触摸屏上迅速点击第二下时触发
@Override
public boolean onDoubleTap(MotionEvent e) {
return false;
}
// 双击后按下跟抬起各触发一次
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
// 单击
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
}
二、主java文件
public class Erasure extends Activity implements OnTouchListener{
private TextView tv = null;
//手势识别
private GestureDetector mGestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_erasure);
tv = (TextView)findViewById(R.id.tv1);
WindowManager wm = getActivity().getWindowManager();
int width = wm.getDefaultDisplay().getWidth();
mGestureDetector = new GestureDetector(this, new MyGestureListener(this,with));
tv.setOnTouchListener(this);
}
public boolean onTouch(View v, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
}