我需要能够在我的视线上捏缩放,我希望枢轴点在我的手指中间。我还需要视图是双指可滚动的。我的问题是,如果我还没有滚动视图,它会正确地放大我的手指中心。但如果我在翻译视图后进行缩放,则不会。当我缩放然后再缩放时,它似乎也随机传送。
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(dx, dy);
canvas.scale(mScaleFactor, mScaleFactor,milieudoigtsX,milieudoigtsY);
... //my draw instructions
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
PlotView.this.milieudoigtsX = (PlotView.this.mPrimStartTouchEventX+PlotView.this.mSecStartTouchEventX)/2;
PlotView.this.milieudoigtsY = (PlotView.this.mPrimStartTouchEventY+PlotView.this.mSecStartTouchEventY)/2;
return true;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
PlotView.this.mScaleFactor *= detector.getScaleFactor();
PlotView.this.mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 10.0f));
invalidate();
return true;
}
}
private class GestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
PlotView.this.dy -= distanceY;
PlotView.this.dx -= distanceX;
invalidate();
return true;
}
}
我必须精确地检测到捏合或滚动动作,因此我的手势监听器和我的音阶监听器不会同时被调用。
感谢您的帮助