Android 通过onTouchEvent判断是否为双击事件
生活随笔
收集整理的這篇文章主要介紹了
Android 通过onTouchEvent判断是否为双击事件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過onTouchEvent判斷是否為雙擊事件,通過前面一次up 跟本次down之間的時間差,并且點擊的點的坐標偏移來確定是否為雙擊事件DOUBLE_TAP_TIMEOUT。
boolean isMove = false;private final int DOUBLE_TAP_TIMEOUT = 200;private MotionEvent mCurrentDownEvent;private boolean mDoubleTapEnabled = false;private MotionEvent mPreviousUpEvent;@Overridepublic void onTouchEvent(MotionEvent event) {Log.e(LOG_TAG, "MotionEvent="+ event.getAction()+",isMove="+isMove);Log.e(LOG_TAG, "mPreviousUpEvent="+ mPreviousUpEvent+",mCurrentDownEvent="+mCurrentDownEvent);if (event.getAction() == MotionEvent.ACTION_MOVE) { isMove = true;}else if (event.getAction() == MotionEvent.ACTION_DOWN) {if (mPreviousUpEvent != null && mCurrentDownEvent != null && isConsideredDoubleTap(mCurrentDownEvent, mPreviousUpEvent, event)) {if (mDoubleTapEnabled && Environment.getExternalStorageState().equals("mounted")) { Toast.makeText(getApplicationContext(), getResources().getString(R.string.double_click), Toast.LENGTH_LONG).show();}}mCurrentDownEvent = MotionEvent.obtain(event);}else if (event.getAction() == MotionEvent.ACTION_UP){mPreviousUpEvent = MotionEvent.obtain(event);isMove = false;}}private boolean isConsideredDoubleTap(MotionEvent firstDown, MotionEvent firstUp, MotionEvent secondDown){if (secondDown.getEventTime() - firstUp.getEventTime() > DOUBLE_TAP_TIMEOUT) {return false;} int deltaX =(int) firstUp.getX() - (int)secondDown.getX();int deltaY =(int) firstUp.getY()- (int)secondDown.getY(); return deltaX * deltaX + deltaY * deltaY < 10000;}?
轉載于:https://www.cnblogs.com/renhui/p/9480948.html
總結
以上是生活随笔為你收集整理的Android 通过onTouchEvent判断是否为双击事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欢迎关注我的微信公众号 “我是一个假的程
- 下一篇: Notepadd ++ PluginMa