有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案