zoukankan      html  css  js  c++  java
  • 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;
            @Override
            public 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;
            }
  • 相关阅读:
    docker logs-查看docker容器日志
    初探 Elasticsearch,学习笔记第一讲
    Centos7 环境下设置固定IP
    强制使用索引查询方法
    linux 常用命令
    MySQL 调优
    docker 常用命令
    mysql 创建临时表
    mysql or in union all 使用方法
    mysql 创建存储过程
  • 原文地址:https://www.cnblogs.com/renhui/p/9480948.html
Copyright © 2011-2022 走看看