Android - 将 Drawable 设置为 Canvas 但保持宽高比

Jim*_*mmy 5 android canvas

我的 Android 代码有一个小问题。这是我第一次使用画布,我想为其设置图像但保留某种类型的纵横比。

这就是我现在正在做的事情,这将图像完全映射到画布上。它将图像宽度-高度设置为画布宽度-高度。

Drawable drawable = image;  // gets the image

drawable.SetBounds(0, 0, canvasWidth, canvasHeight);

drawable.Draw(canvas);
Run Code Online (Sandbox Code Playgroud)

这在某些设备上效果很好,但是当设备很大时,拉伸效果就很糟糕。我想以保持纵横比的方式设置边界。如果画布的宽度-高度不是相同的宽高比,它将尝试以宽高比填充画布,但可能会在 x 或 y 轴上留下一些空间。

int imgWidth = 500;
int imgHeight = 800;
Run Code Online (Sandbox Code Playgroud)

我想根据这些值将图像映射到画布上,并根据需要进行拉伸,但即使部分画布未填充,也保持此纵横比。

做这个的最好方式是什么 ?

谢谢

Sec*_*der -2

在每个资源文件夹中提供正确的图像。正确的图像意味着正确的分辨率和屏幕密度。请参阅此链接http://developer.android.com/guide/topics/resources/providing-resources.html