private static final int TOUCH_SLOP = 20;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastMotionX = x;
mLastMotionY = y;
mIsMoved = false;
mIsReleased = false;
postDelayed(mLongPressRunnable, ViewConfiguration.getLongPressTimeout());
break;
case MotionEvent.ACTION_MOVE:
if (mIsMoved)
break;
if (Math.abs(mLastMotionX - x) > TOUCH_SLOP
|| Math.abs(mLastMotionY - y) > TOUCH_SLOP) {
//移动超过阈值,则表示移动了
mIsMoved = true;
removeCallbacks(mLongPressRunnable);
}
break;
case MotionEvent.ACTION_UP:
//释放了
mIsReleased = true;
removeCallbacks(mLongPressRunnable);
break;
}
return super.dispatchTouchEvent(event);;
}
自定义View设置长按监听
最新推荐文章于 2022-02-11 16:23:35 发布