首页 > 技术文章 > android 根据距离区分 点击跟滑动事件

libing029 2020-02-25 15:27 原文

      public void onClick(View v) {
                if (isclick)
                    Log.i(TAG, "onclick");
            }
        });
    }

    float distance = 0;
    float start, end;
    boolean isclick = false;
    boolean isFirst = false;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        Log.i(TAG, "onTouchEvent: ");
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                isclick = false;//点击状态清空
                start = event.getX();
                break;
            case MotionEvent.ACTION_MOVE:
                end = event.getX();
                distance = end - start;
                if (isFirst==false&&Math.abs(distance) > 10) {//如果滑动距离大于指定数,并判断是否第一次(解决滑出指定距离又滑入当作是点击事件bug)
                    isFirst = true;
                }
                if(isFirst){//如果首次确认是滑动状态责之后滑动都进入此块代码
                    Log.i(TAG, "move");
                }

                break;
            case MotionEvent.ACTION_UP:
                if (isFirst) {//是滑动状态
                    isclick = false;
                } else {//点击状态
                    isclick = true;
                }
                isFirst = false;//滑动状态清空
                break;
        }
        return true;
    }

 

推荐阅读