小淇哥QQ:91630844(如果想要demo,可以加我QQ,下载地址:http://git.oschina.net/wsxqg/shijiandemo/attach_files)
1创建一个private GestureDetector detector;activity会实现 OnGestureListener,OnTouchListener, OnDoubleTapListener接口,一个是手势事件,一个是双击事件,一个是触摸事件
可以配合iv.setOnTouchListener(this);触摸事件进行
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return this.detector.onTouchEvent(event);
}
进行链接
//刚刚手指接触到触摸屏的那一刹那,由1个MotionEvent ACTION_DOWN触发
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
Log.i(TAG, "onDown y=" + e.getY());
return true;
}
这个可以理解为长按之前
// 手指按在触摸屏上,它的时间范围在按下起效,在长按之前,
//由一个1个MotionEvent ACTION_DOWN触发
//注意和onDown()的区别,强调的是没有松开或者拖动的状态
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.i(TAG, "onShowPress");
}
//手指离开触摸屏的那一刹那
//,由一个1个MotionEvent ACTION_UP触发
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
Log.i(TAG, "onSingleTapUp y=" + e.getY());
return true;
}
//手指按下且在屏上滑动
//由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// TODO Auto-generated method stub
Log.i(TAG, "onScroll:distanceX = " + distanceX + " distanceY = " + distanceY);
return true;
}
//手指在触摸屏上迅速移动,并松开的动作
//由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发
//e1:第1个ACTION_DOWN MotionEvent ,e2:最后一个ACTION_MOVE MotionEven
//velocityX:X轴上的移动速度,像素/秒 ,velocityY:Y轴上的移动速度,像素/秒
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// TODO Auto-generated method stub
Log.i(TAG, "onFling");
if(e1.getX()-e2.getX()>100&&Math.abs(velocityX)>200){
Log.i(TAG, "onFling 向左滑动");
return true;
}else if(e1.getX()-e2.getX()<-100&&Math.abs(velocityX)>200){
Log.i(TAG, "onFling 向右滑动");
return true;
}else if(e1.getY()-e2.getY()>10&&Math.abs(velocityY)>50){
Log.i(TAG, "onFling 向上滑动 上位移="+(e1.getY()-e2.getY()));
return true;
}else if(e1.getY()-e2.getY()<-10&&Math.abs(velocityY)>50){
Log.i(TAG, "onFling 向下滑动 下位移"+(e1.getY()-e2.getY()));
return true;
}
return false;
}
下面这两个是双击事件的
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.i(TAG, "onDoubleTap");
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
Log.i(TAG, "onDoubleTapEvent");
return false;
}
共同学习,写下你的评论
评论加载中...
作者其他优质文章