java - Android Touch UP 不工作

标签 java android android-event

我有点坚持使用 android 中的这个项目,我试图弄清楚为什么这不起作用,但我不知道。顺便说一下,这是一个自定义 View ,以防万一。

问题是这个事件 ACTION_DOWN 正在完美运行我正在获取控制台调试“Touching 1”和“Touching 2”但是 ACTION_UP、ACTION_CANCEL 或默认:不工作我无法弄清楚所以任何帮助将非常感谢谢谢你

        public void doTouch(MotionEvent event)
        {
            int action = event.getAction();

            float x = event.getX();
            float y = event.getY();

            switch(action)
            {
            case MotionEvent.ACTION_DOWN:
                if(x < 125 && y < 125){
                    for(AnimatedSprite a:mSprites)
                    {
                        if(a.getID() == 1)
                        {
                            a.AdvanceToFrame(0);
                            touching = true;
                            System.out.println("Touching 1");
                            //touch_obj1 = true;
                        }
                    }
                }
                else if(x > getWidth()-125 && y > getHeight()-125)
                {
                    for(AnimatedSprite a:mSprites)
                    {
                        if(a.getID() == 2)
                        {
                            a.AdvanceToFrame(1);
                            System.out.println("Touching 2");
                            touching = true;
                            //touch_obj2 = true;
                        }
                    }
                }
                else
                {
                    touching = false;
                }
                break;
                case MotionEvent.ACTION_CANCEL:
                case MotionEvent.ACTION_UP:

                    System.out.println("Touch UP");
                    touching = false;
                    break;

                default:
                    System.out.println("NOT Touching");
                    touching = false;
                break;
            }
        }

这里是我调用doTouch函数的地方

public boolean onTouchEvent(MotionEvent event)
        {
            thread.doTouch(event);
            return super.onTouchEvent(event);
        }

最佳答案

看起来您的问题是您在 onTouchEvent 中处理触摸事件的方式。如果要处理触摸事件,则需要从 onTouchEvent 返回 true。因此,如果您收到 ACTION_DOWN 并从 onTouchEvent 返回 false,系统将不会再向您发送任何相关的触摸事件,直到下一个 ACTION_DOWN 事件。

在不知道你对触摸事件做了什么的情况下,我不能给你一个绝对适合你的情况的解决方案,但是如果你想接收除 ACTION_DOWN 之外的任何触摸事件您需要从 onTouchEvent 返回 true。

关于java - Android Touch UP 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641064/

相关文章:

android - 方向更改后,MapView 的 fragment 在触摸时崩溃

android - 如何检测点击事件是否在android中完成?

java - ConcurrentModificationException 修复问题

java - 从外部 JAR 文件加载 Spring 组件

android - 使用 react-native-sensors 的磁力计的平滑方向指南针

android - 使用 onInterceptTouchEvent() 时检测触摸事件

android - 为什么从事件调用时 view.startAnimation(animation) 不起作用?

java - 如何使用 SQL-lite 数据库检索 android studio 中的单选按钮组

java - 解释一下错误: "constructor … cannot be applied: actual and formal differ in length"

java - 在 kotlin 中使用 java 自定义注解