【发布时间】:2015-12-28 09:37:57
【问题描述】:
快速,可能很简单,问题。我有一个背景动画的视图,在此期间,我想禁止用户与视图交互。我的视图是 FrameLayout,我正在使用 onTouchEvent() 捕获触摸事件。我尝试过的解决方案:
1) 先 setOnTouchListener(null),然后 setOnTouchListener(this)。问题是,我的视图只调用 onTouchEvent(MotionEvent),而不是 onTouch(View, MotionEvent),所以我无法通过那里的事件。
2) 首先 setEnabled(false),然后 setEnabled(true)。源代码说:可点击的禁用视图仍然消耗触摸事件,它只是不响应它们。问题是,MotionEvents 仍然会在 onTouchEvent() 中通过。
3) requestDisallowInterceptTouchEvent(false),然后是(true)。这仅处理来自父级的触摸事件。
我正在使用的解决方案是使用布尔变量 isAnimating,并在 onTouchEvent() 中检查它的值。我宁愿不这样做,因为它对我来说看起来很丑,我宁愿使用 API 也不愿重新发明轮子,所以……有人有什么想法吗?谢谢。
【问题讨论】:
标签: android touch android-view