Java 安卓润色不起作用

Java 安卓润色不起作用,java,android,android-event,Java,Android,Android Event,我一直在安卓系统中做这个项目,我想弄明白为什么这个不起作用,但我不知道。顺便说一下,这是一个自定义视图,以防万一 问题是,事件操作“关闭”工作正常,我正在进行控制台调试“触摸1”和“触摸2”,但操作“打开”,操作“取消”或默认:不工作,我无法解决此问题,因此非常感谢您的帮助谢谢 public void doTouch(MotionEvent event) { int action = event.getAction();

我一直在安卓系统中做这个项目,我想弄明白为什么这个不起作用,但我不知道。顺便说一下,这是一个自定义视图,以防万一

问题是,事件操作“关闭”工作正常,我正在进行控制台调试“触摸1”和“触摸2”,但操作“打开”,操作“取消”或默认:不工作,我无法解决此问题,因此非常感谢您的帮助谢谢

        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;
            }
        }

您的问题似乎是您在
onTouchEvent
中处理触摸事件的方式。如果要处理触摸事件,需要从
onTouchEvent
返回true。因此,如果您得到一个
操作_DOWN
并从
onTouchEvent
返回false,系统将不会向您发送更多相关的触摸事件,直到下一个
操作_DOWN
事件


如果不知道您正在对触摸事件执行什么操作,我无法为您提供一个肯定适用于您的情况的解决方案,但是如果您想要接收除
操作_DOWN
之外的任何触摸事件,您需要从
onTouchEvent

返回true。好的,我已经解决了这个问题,我必须做的就是这样

1) 我更改了函数,以便它可以返回

boolean public bool doTouch(MotionEvent event)
2) 当然,我在函数结束时返回true

3) 当我叫它的时候,我做了这个

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

能否显示调用
doTouch
方法的代码?具体地说,我想知道您是否从
onTouchEvent()
调用返回true。我可以,但正如我所说的,正在检测到操作,但让我修改问题,以便向您显示代码抱歉,我花了这么长时间才回答,但尽管它听起来很有逻辑,就像我说的actiondown完美地工作只是ActionUp不起作用对他们来说不返回真的会很奇怪我猜,但也许我错了是的,正如我在回答中提到的,您将始终获得
操作_DOWN
但您不会获得其他事件,除非您在
操作_DOWN
事件的响应中从
操作_DOWN
返回true。好的,谢谢您,因为这很有意义,我将它作为正确的答案
  public boolean onTouchEvent(MotionEvent event)
    {
        return doTouch(event);
    }