public class MyView extends ImageView { float downX, downY; float moveX, moveY; Context mContext; //速度追踪器 VelocityTracker velocityTracker; public MyView(Context context) { super(context); mContext = context; } public MyView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; setImageResource(R.mipmap.shopping_cart); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: downX = event.getRawX(); downY = event.getRawY(); if (velocityTracker==null){ velocityTracker = VelocityTracker.obtain(); }else{ velocityTracker.clear(); } velocityTracker.addMovement(event); break; case MotionEvent.ACTION_MOVE: moveX = event.getRawX(); moveY = event.getRawY(); this.setX(getX() + (moveX - downX)); this.setY(getY() + (moveY - downY)); downX = moveX; downY = moveY; velocityTracker.addMovement(event); velocityTracker.computeCurrentVelocity(1000);// 用于计算速度 1000 为毫秒 break; case MotionEvent.ACTION_UP: if (velocityTracker.getXVelocity()==0 && velocityTracker.getYVelocity()==0){ Toast.makeText(mContext,"OnClick...",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(mContext,"Move...",Toast.LENGTH_SHORT).show(); } Log.i("msg","velocityTracker.getXVelocity()==="+velocityTracker.getXVelocity()); Log.i("msg","velocityTracker.getYVelocity()==="+velocityTracker.getYVelocity()); break; } return true; } }