问题描述
我有以下问题:我想检测和区分同一视图上的用户“触摸”和“单击”。我已经在其他视图上方的视图上注册了onTouch-Listener(参见代码)。
预期的行为::如果用户点击它,则onClick事件将被传递到其下方的视图。如果用户执行缩放手势,则下面的视图将被缩放。
使用侦听器查看
trackpad.setonTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view,MotionEvent motionEvent) {
if(scaleDetector.onTouchEvent(motionEvent)) {
Log.d("PadLayout","Scaling");
return true;
} else {
Log.d("PadLayout","No Scale detected,this is a tap. Returning false.");
return false;
}
}
});
这是我的ScaleGestureDetector(“ scaleDetector”)中的ScaleListener:
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
float factor = 1;
@Override
public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
factor *= scaleGestureDetector.getScaleFactor();
factor = Math.max(1,Math.min(factor,ResourcesCompat.getFloat(getResources(),R.dimen.pad_large)));
setPadScaleFactor(factor); // this method sets scaleX and scaleY
return true;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) {
return true;
}
}
此代码的问题在于,它永远不会检测到敲击。我可以缩放视图,但是一旦点击它,它什么也没做。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)