Android:在特定大小的画布上绘制图像

Android:在特定大小的画布上绘制图像,android,ondraw,custom-view,Android,Ondraw,Custom View,我正在动态添加1个布局。在该视图中添加自定义视图。现在我想在画布上画一个和布局大小完全相同的图像 下面是我尝试过的自定义视图的代码 public BlockView(Context context, Bitmap bitmap, int layoutHeight, int layoutWidth) { super(context); this.bitmap = bitmap; this.width = bitmap.get

我正在动态添加1个布局。在该视图中添加自定义视图。现在我想在画布上画一个和布局大小完全相同的图像

下面是我尝试过的
自定义视图的代码

public BlockView(Context context, Bitmap bitmap, int layoutHeight,
            int layoutWidth) {
        super(context);

        this.bitmap = bitmap;
        this.width = bitmap.getWidth();
        this.height = bitmap.getHeight();
        this.layoutHeight = layoutHeight;
        this.layoutWidth = layoutWidth;

        if (drawableWidth <= viewWidth && drawableHeight <= viewHeight) {
            scale = 1.0f;
        } else {
            scale = Math.min((float) viewWidth / (float) drawableWidth,
                    (float) viewHeight / (float) drawableHeight);
        }

        mDrawable = new BitmapDrawable(getResources(), bitmap);
    }

    private static float getDegreesFromRadians(float angle) {
        return (float) (angle * 180.0 / Math.PI);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        drawableWidth = mDrawable.getIntrinsicWidth();
        drawableHeight = mDrawable.getIntrinsicHeight();

        viewWidth = layoutWidth;
        viewHeight = layoutHeight;

        setMeasuredDimension(viewWidth, viewHeight);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        int saveCount = canvas.save();

        matrix.setScale(scale, scale);
        matrix.postRotate(getDegreesFromRadians(angle));
        matrix.postTranslate(position.getX(), position.getY());

        canvas.concat(matrix);

        mDrawable.setBounds(0, 0, drawableWidth, drawableHeight);
        mDrawable.draw(canvas);

        canvas.restoreToCount(saveCount);
    }
public BlockView(上下文上下文、位图、int-layouthweight、,
内部布局(宽度){
超级(上下文);
this.bitmap=位图;
this.width=bitmap.getWidth();
this.height=bitmap.getHeight();
this.layouthweight=layouthweight;
this.layoutWidth=layoutWidth;

如果(drawableWidth mDrawable.setBounds(0,0,getWidth(),getHeight()),我尝试了它。但是通过使用它,整个图像会缩小到适合的区域。通过使用
mDrawable.setBounds(0,0,drawableWidth,drawableHeight)
,图像不要收缩,通过翻译可以看到整个图像。你能告诉我其他方法吗?如果我理解正确,你希望在块视图中绘制图像,尽可能占用空间,同时保持图像的纵横比吗?是的。我希望与你说的完全一样。