Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i("test", "触发点击");
            }
        });
        button.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                Log.i("test", "触发长按");
                return false;
            }
        });
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()) {
                    case MotionEvent.ACTION_DOWN: {
                        Log.i("test", "按下");
                        break;
                    }
                    case MotionEvent.ACTION_MOVE: {
                        Log.i("test", "移动");
                        break;
                    }
                    case MotionEvent.ACTION_UP: {
                        Log.i("test", "抬起");
                        break;
                    }
                }
                //返回true不响应click事件
                return true;
            }
        });

如上,日志只会打印按下/移动/抬起,而不会打印触发点击

touch事件早于点击事件,需要需要触发点击事件,需要将ontoch处理方法中的return true改成return false

 
posted on 2025-11-16 10:27  le.li  阅读(15)  评论(0)    收藏  举报