android - 按钮上的单击、按下和释放事件

标签 android onclicklistener ontouchlistener

如何检测按钮的点击、按下和释放状态。我想对这些状态执行不同的功能。单击时我想调用函数 1,按下时我想调用函数 2,接收时我想调用函数 3。

我们可以使用 View.OnClickListener 检测点击状态。我们可以使用 View.OnTouchListener 并处理 ACTION_DOWNACTION_UP 来检测 Button 的按下和释放状态。我能够单独检测到这些状态,但是不能一起检测。

下面是 OnCLickListener 的代码。

button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            System.out.println(" clicked ");
        }
    });

下面是 OnTouchListener 的代码。

button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    System.out.println(" pressed ");
                    return true;
                case MotionEvent.ACTION_UP:
                    System.out.println(" released ");
                    return true;
            }
            return false;
        }
    });

当我在 Button 上设置点击和触摸监听器时,Click 事件永远不会被调用。相反,我收到按下和释放状态。

如何同时处理这三种状态?

编辑:

我添加了我使用过的 OnClickListener 和 OnTouchListener 代码。

最佳答案

很简单,因为 Button 是一个 View:

    button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                // Pressed
            } else if (event.getAction() == MotionEvent.ACTION_UP) {
                // Released
            }
            return true;
        }
    });

关于android - 按钮上的单击、按下和释放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27520044/

相关文章:

android - RxJava 同时删除操作

java - 如何在android中通过url从ftp服务器下载图像/文件?

android - 如何存储富文本数据?

java - 如何将点击监听器设置为 Activity 的属性?

java - 输入后我的按钮无法激活,我不明白为什么

Android 为多个 ImageView 触发 onTouch 事件

Android 在 ScrollView 滚动时禁用子 onTouch

java - OnTouchListener 没有响应

android - Dagger 2 瞄准镜说明

java - 完全无响应的 Android 自定义适配器