我在我的UI上创建了一种掩码,用于注册和拦截触摸。 我的问题是,我需要知道用户何时单击UI视图并执行具有该知识的操作。
例如,我想知道该用户点击了Button
。我用onTouch监听器在其上创建了一个不可见的图层。
layer.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
registerTouch();
}
return false;
}
});
多亏了这一点,我知道用户点击了按钮,按钮仍然可以点击,因为我没有消耗这个事件。
问题是 - 当用户触摸那个UI元素,然后移动手指时,按钮没有被按下,但我仍然注册它被按下。
我无法使用onClickListener
,因为它不会通过我的隐形层传递触摸。
我应该如何使用onTouches“模拟”onClick?
(以下示例是我整个模块的简化逻辑,有人可以建议将所有这些移动到按钮的onClickListener中,但是我的项目的整个想法是为整个应用程序中的不同元素创建一种通用逻辑)
答案 0 :(得分:0)
我认为GestureDetector会做你想要的。您创建一个GetureDetector实例,并将OnGestureListener个回调传递给它的构造函数。这些回调将在解释流经它的MotionEvent时触发。
您还可以考虑使用GestureOverlayView替换透明叠加层,因为它听起来几乎完全相同。