Android 调整位图大小是在视图中裁剪而不是缩放

Android 调整位图大小是在视图中裁剪而不是缩放,android,android-view,Android,Android View,我不知道如何调整位图的大小。基于这里的帖子,Bitmap.createScaledBitmap是一种方法,但它对我不起作用。由于视图的性质,我在onDraw中执行所有操作,所以我认为我不能使用布局或图像视图。以下是我正在做的: 我有一张帝国大厦的照片,是200x200。我运行以下代码进行设置: private void setupBitmap() { int bitmapSize = 100; Bitmap originalBitmap = Bitma

我不知道如何调整位图的大小。基于这里的帖子,Bitmap.createScaledBitmap是一种方法,但它对我不起作用。由于视图的性质,我在onDraw中执行所有操作,所以我认为我不能使用布局或图像视图。以下是我正在做的:

我有一张帝国大厦的照片,是200x200。我运行以下代码进行设置:

    private void setupBitmap() {

        int bitmapSize = 100;

        Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
        myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);
    }
这是我的照片:

    protected void onDraw(Canvas canvas) {
         canvas.drawBitmap(myBitmap, 0, 0, null);
    }
结果如下,请注意,图像只是被裁剪,没有调整大小:

仅针对s&g,如果我将bitmapSize设置为200,则如下所示:


您可以尝试使用ImageView:

ImageView iv = (ImageView) findViewById(R.id.imageview);

Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);

iv.setImageBitmap(myBitmap);

您可以尝试使用ImageView:

ImageView iv = (ImageView) findViewById(R.id.imageview);

Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empirestate_sm);
myBitmap = Bitmap.createScaledBitmap(originalBitmap, bitmapSize, bitmapSize, true);

iv.setImageBitmap(myBitmap);

好的,我已经弄明白了。对我有效的方法是让位图保持创建时的状态。然后在画布上绘制时,将其设置为正确的大小。我假设createScaledBitmap函数已损坏

   myCanvas.drawBitmap (landmarkImg, null, new RectF((float)0,(float)0,newWidth,newHeight),null);

好的,我已经弄明白了。对我有效的方法是让位图保持创建时的状态。然后在画布上绘制时,将其设置为正确的大小。我假设createScaledBitmap函数已损坏

   myCanvas.drawBitmap (landmarkImg, null, new RectF((float)0,(float)0,newWidth,newHeight),null);

因此,它被视图剪裁,如果你不想要它,那么直接在大的父视图中绘制位图。如果你不想要它,那么直接在大的父视图中绘制位图。我如何将ImageView绘制到画布上?我如何将ImageView绘制到画布上?