Android规模在画布上缩放缩放位图

And*_*oid 5 android canvas zoom bitmap

我需要在我的应用中添加以下功能

我必须将Bitmap显示到Canvas中

然后用户可以放大并缩小位图到Canvas

如何使它成为可能?我只需要它在Canvas中而不是在ImageView中

所有答案对我都没有多大帮助..所以我想更新我的问题

基本上我需要一个简单的2按钮和画布......

在第一个按钮上单击画布上的图像可以旋转/放大和缩小,单击第二个按钮时,它必须显示由用户创建的缩放或缩小图像,之后用户必须无法缩放或缩小该画布

小智 7

如果放大并缩小画布中的位图,请使用下面的代码

在您的活动中添加您的代码

MyView myView = new MyView(this);
    setContentView(myView);
Run Code Online (Sandbox Code Playgroud)

在你的观点之下.

public class MyView extends View {
private Drawable image;
private ScaleGestureDetector scaleDetector;
private float scaleFactor = 1.f;

public MyView(Context context) {
    super(context);
    init(context);
}

public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public MyView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}

private void init(Context ctx) {
    image = getResources().getDrawable(R.drawable.ic_launcher);
    image.setBounds(0, 0, image.getIntrinsicWidth(),
            image.getIntrinsicHeight());
    scaleDetector = new ScaleGestureDetector(ctx, new ScaleListener());
}


@Override
protected void onDraw(Canvas canvas) {
    canvas.save();
    canvas.scale(scaleFactor, scaleFactor);
    image.draw(canvas);
    canvas.restore();

};

@Override
public boolean onTouchEvent(MotionEvent ev) {
    scaleDetector.onTouchEvent(ev);
    return true;
}

private class ScaleListener extends
        ScaleGestureDetector.SimpleOnScaleGestureListener {
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        scaleFactor *= detector.getScaleFactor();
        scaleFactor = Math.max(0.1f, Math.min(scaleFactor, 10.0f));
        invalidate();
        return true;
    }
}
}
Run Code Online (Sandbox Code Playgroud)