5

我有一个动画,可以在触摸时按下按钮。我希望它能够在用户滚动屏幕时保持按下状态。为此,我制作了一个动画,基本上只是保持图像处于相同状态以在 ACTION_MOVE 中调用。我的问题是,当我释放按钮时,不会调用 ACTION_UP,这会触发动画将按钮恢复到完整大小并且不再看起来被按下。我在 ScrollView 中有整个相对布局。我仍然不完全了解发生了什么,但似乎 ScrollView 可能正在“接管” onTouch 事件。这是我的 onTouchListener 代码。

s104.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                clearAnim();
                s104.setAnimation(animPressed);
                s104.startAnimation(animPressed);
                return true;
            case MotionEvent.ACTION_MOVE:
                s104.setAnimation(animDrag);
                s104.startAnimation(animDrag);
                return true;
            case MotionEvent.ACTION_UP:

                s104.setAnimation(animReleased);
                s104.startAnimation(animReleased);

                return true;
            }
            return false;
        }
    });

我不知道为什么没有调用 ACTION_UP。任何帮助将不胜感激。

4

1 回答 1

8

我仍然不完全了解发生了什么,但似乎 ScrollView 可能正在“接管” onTouch 事件。

那是对的。您正在经历的是ScrollView“接管” MotionEvent. 您可以在您的OnTouchListener- 添加案例中捕获此事件MotionEvent.ACTION_CANCEL。如果用户按下视图 (ACTION_DOWN) 并随后向下滚动,您可以在其中确定结果。

于 2013-11-24T08:52:10.423 回答