java缩放和转换自定义视图
我需要能够在我的视图上收缩缩放,我希望轴点是我手指的中间。我还需要查看两个手指滚动。我的问题是,如果我还没有滚动视图,它会正确地在我的手指中心缩放。但是,如果我在转换视图后进行缩放,它不会。当我缩放然后再次缩放时,它似乎也会随机传送
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;
}
}
我必须精确地检测到挤压或滚动动作,这样我的手势侦听器和缩放侦听器就不会同时被调用
谢谢你的帮助
共 (0) 个答案