我尝试使用ScaleGestureDetector检测捏合和捏合。这就是我想要做的事情。
view.setOnTouchListener(new View.OnTouchListener() {
final ViewConfiguration vc = ViewConfiguration.get(mContext);
final int minTouchDistance = vc.getScaledTouchSlop();
private GestureDetector gestureDetector = new GestureDetector(mContext, new GestureListener());
ScaleGestureDetector scaleGestureDetector = new ScaleGestureDetector(mContext, new ScaleGestureDetector.OnScaleGestureListener() {
@Override
public boolean onScale(ScaleGestureDetector detector) {
double scaleFactor = detector.getScaleFactor();
Log.d(TAG, "Scale gesture detected");
if (1.0f > scaleFactor) {
Log.d("ScaleFactor", "Pinch Dection");
} else {
Log.d("onScaleEnd", "Zoom Dection");
}
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return false;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
}
});
public boolean onTouch(View v, MotionEvent event) {
int index = event.getActionIndex();
int pointerId = event.getPointerId(index);
Point p2;
scaleGestureDetector.onTouchEvent(event);
gestureDetector.onTouchEvent(event);
//Rest of the code
......
}
GestureDetector
工作正常,但ScaleGesureDetector
未检测到捏合。难道我做错了什么?我想检测捏进和出手势。还有其他办法吗?