Android - 将Drawable设置为Canvas但保持Aspect Ratio

时间:2016-02-15 23:59:31

标签: android canvas

我的Android代码存在一个小问题。这是我第一次使用画布,我想为它设置一个图像,但保留一些宽高比。

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

Drawable drawable = image;  // gets the image

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

drawable.Draw(canvas);

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

int imgWidth = 500;
int imgHeight = 800;

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

这样做的最佳方式是什么?

由于

2 个答案:

答案 0 :(得分:0)

我已经回答了一个类似的问题 here

为了保持纵横比,我这样做了:

game

以上适用于可绘制宽度小于其高度的情况。
如果drawable的高度大于它的宽度,那么首先将高度设置为你想要的大小,然后计算宽度。

答案 1 :(得分:-1)

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