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() 方法即可。