java - 不显示 MotionEvent.ACTION_UP 或 MotionEvent.ACTION_CANCEL

标签 java android touch

我正在编写一个需要响应触摸事件的 Android 应用程序。我希望我的应用程序将列表项的颜色更改为自定义颜色。我编写了以下代码,但只有 MotionEvent.ACTION_DOWN 部分有效。 LogCat 显示 ACTION_CANCELACTION_UP 根本没有被调用。您能否帮我理解为什么我的代码无法正常工作。

这是我的代码...

view.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            view.setBackgroundColor(Color.rgb(1, 1, 1));
            Log.d("onTouch", "MotionEvent.ACTION_UP" );
        }
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            view.setBackgroundColor(Color.rgb(23, 128, 0));
            Log.d("onTouch", "MotionEvent.ACTION_DOWN" );
        }
        if (event.getAction() == MotionEvent.ACTION_CANCEL) {
            view.setBackgroundColor(Color.rgb(1, 1, 1));
            Log.d("onTouch", "MotionEvent.ACTION_CANCEL" );
        }
        return false;
    }
});

最佳答案

如果您从 onTouch 方法返回 false,则不会向监听器传递更多事件。至少在 event.getAction() == MotionEvent.ACTION_DOWN 的情况下,您应该返回 true

重构您的代码,如下所示:

view.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
    view.setBackgroundColor(Color.rgb(1, 1, 1));
    Log.d("onTouch", "MotionEvent.ACTION_UP" );
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
    view.setBackgroundColor(Color.rgb(23, 128, 0));
    Log.d("onTouch", "MotionEvent.ACTION_DOWN" );
    return true;
}

if (event.getAction() == MotionEvent.ACTION_CANCEL) {
    view.setBackgroundColor(Color.rgb(1, 1, 1));
    Log.d("onTouch", "MotionEvent.ACTION_CANCEL" );
}
return false;
}
});

关于java - 不显示 MotionEvent.ACTION_UP 或 MotionEvent.ACTION_CANCEL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192122/

相关文章:

java - GWT - image.getHeight() 和 image.getWidth() 在第一次加载时不起作用

java - Android:如何在android中下载文件?

jquery - iOS jquery .on 点击​​库 1.8.3

java - Play 框架中的 onError() 之后没有发送任何结果

java - JSF 中渲染错误以及读取适当的 bean 属性时出错

java - Multi-Tenancy hibernate 不在租户之间切换

java - 如何在类中调用 Activity 函数?

javascript - HTML5 在 Javascript 中从 Canvas 保存图像 (Android)

jquery - iPad 版 Safari 上的 Web 应用程序 : Cancel touchstart on touchmove

android - 如何检测点击按钮,webview中的视频元素?