【问题标题】:action_up doesn't call after action_moveaction_up 在 action_move 之后不调用
【发布时间】:2013-10-22 18:38:15
【问题描述】:

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

【问题讨论】:

    标签: android android-animation touch-event ontouchlistener


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 2021-06-06
      • 2022-06-19
      • 2022-09-30
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多