在action_move之后,action_up不会调用

时间:2013-10-15 04:00:23

标签: android android-animation ontouchevent ontouchlistener

我有一个动画,可以按下按钮。当用户滚动屏幕时,我希望它能够保持按下状态。为此,我制作了一个动画,基本上只是让图像处于相同的状态,以便在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。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:5)

  

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

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