我有一个动画,可以按下按钮。当用户滚动屏幕时,我希望它能够保持按下状态。为此,我制作了一个动画,基本上只是让图像处于相同的状态,以便在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。任何帮助将不胜感激。
答案 0 :(得分:5)
我仍然不完全了解发生了什么,但看起来ScrollView可能正在“接管”onTouch事件。
这是正确的。您遇到的是ScrollView
“接管”MotionEvent
。您可以在OnTouchListener
中捕获此事件 - 为MotionEvent.ACTION_CANCEL
添加案例。在那里,如果用户按下了视图(ACTION_DOWN)并随后向下滚动,您可以确定结果。