美文网首页
Android-onClick和touch事件冲突

Android-onClick和touch事件冲突

作者: XII01 | 来源:发表于2020-05-25 13:36 被阅读0次
/**
 * @author wangxx
 * @data 2020/4/22
 */
public class FloatingListener implements View.OnTouchListener {

    public static final String TAG="FloatingListener";

    private boolean isMove;
    //开始时的坐标和结束时的坐标(相对于自身控件的坐标)
    private int mStartX, mStartY, mStopX, mStopY;
//按下事件跟结束事件
    private long mLastTime, mCurrentTime;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction();

        switch (action) {
            case MotionEvent.ACTION_DOWN:
                isMove = false;
                mStartX = (int) event.getRawX();
                mStartY = (int) event.getRawY();
                mLastTime = System.currentTimeMillis();
                break;
            case MotionEvent.ACTION_MOVE:
                isMove = true;
                break;
            case MotionEvent.ACTION_UP:
                mStopX = (int) event.getRawX();
                mStopY = (int) event.getRawY();
                mCurrentTime = System.currentTimeMillis();
                //判断时间
                if (mCurrentTime - mLastTime < 500) {
                    //判断移动距离
                    if (Math.abs(mStartX - mStopX) >= 10 || Math.abs(mStartY - mStopY) >= 10) {
                        isMove = true;
                    } else {
                        isMove = false;
                    }
                } else {
                    isMove = true;
                }
                break;
            default:
                break;
        }
        LOG.i(TAG,"isMove="+isMove);
        //如果是移动事件不触发OnClick事件,防止移动的时候一放手形成点击事件
        return isMove;

    }
}

相关文章

网友评论

      本文标题:Android-onClick和touch事件冲突

      本文链接:https://www.haomeiwen.com/subject/pelyahtx.html