pointF = new PointF();
topvp.setOnTouchListener(new View.OnTouchListener() {
int flage = 0 ;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
flage = 0 ;
pointF.set(event.getX(),event.getY());
break ;
case MotionEvent.ACTION_MOVE:
//就是加了这个方法进行判断 true就是移动了,flase则没有
if (isRelMove(pointF,event)){
flage = 1 ;
}
break ;
case MotionEvent.ACTION_UP :
if (flage == 0) {
//抬起时的操作
}
break ;
default:break;
}
return false;
}
});
上面所用到的方法
/**
*
* 判断是否是真实的滑动手势(解决在华为手机上两次点击坐标一致的情况下系统也返回滑动事件标识的问题)
* @param downPointF 触发 ACTION_DOWN 时保存的坐标
* @param moveEvent 触发 ACTION_MOVE 时的MotionEvent
* */
private boolean isRelMove(PointF downPointF, MotionEvent moveEvent){
return moveEvent.getAction() == MotionEvent.ACTION_MOVE && Math.abs(moveEvent.getX()-downPointF.x)>0;
}