android 中 touchEvent 转变为 longClick
项目中touchEvent将longClick事件拦截,故而在touchEvent中实现了longClick事件
float downX = 0, downY = 0; @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()){ case MotionEvent.ACTION_DOWN : downX = ev.getX(); downY = ev.getY(); handler.postDelayed(longClickListenerRunnable, 2000); break; case MotionEvent.ACTION_MOVE: if(Math.abs(downX - ev.getX()) > 20 || Math.abs(downY - ev.getY()) >20){ handler.removeCallbacks(longClickListenerRunnable); } break; case MotionEvent.ACTION_UP: handler.removeCallbacks(longClickListenerRunnable); break; } return super.dispatchTouchEvent(ev); }
private static final Handler handler = new Handler();
/** * 监听长按事件 */ Runnable longClickListenerRunnable = new Runnable() { @Override public void run() { onLongClick(); } }; /** * long click */ public void onLongClick(){ Log.v(this.getLocalClassName(), "long click base"); }
写在BaseActivity里面,想用的时候重写 onLongClick() 方法即可。
本文介绍了一种在Android中通过重写dispatchTouchEvent方法来实现longClick事件的方法。该方法利用了Handler延迟执行特性,在ACTION_DOWN时启动计时,当手指移动超过阈值或抬起时取消计时。
2072

被折叠的 条评论
为什么被折叠?



