将大图像设置为SurfaceView的背景,以使其适合Android中的显示高度

时间:2012-02-05 12:04:21

标签: android bitmap 2d surfaceview

我在Android中使用SurfaceView。应用程序始终处于横向模式。

在我的 res / drawable 文件夹中,我的背景很大,也是横向模式,但比大多数显示尺寸都大。

enter image description here

现在我想将它设置为SurfaceView的背景,以便它完全适合显示。因此图像的高度应该等于显示器的高度。

enter image description here

我该怎么做?我是否必须为ldpi,mdpi,hdpi和xhdpi使用替代资源?但即使这样,我也不知道显示器的确切高度。

我目前正在使用:

canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.background), 0, 0, null);

我尝试使用矩阵调整位图大小。但是那时图像的质量变得很差,不是吗?

(当然,解决方案也应该是高效的。)

1 个答案:

答案 0 :(得分:2)

protected Bitmap scaled = null;

public void surfaceCreated(SurfaceHolder arg0) {
    Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.background);
    float scale = (float)background.getHeight()/(float)getHeight();
    int newWidth = Math.round(background.getWidth()/scale);
    int newHeight = Math.round(background.getHeight()/scale);
    Bitmap scaled = Bitmap.createScaledBitmap(background, newWidth, newHeight, true);
}

public void onDraw(Canvas canvas) {
    canvas.drawBitmap(scaled, 0, 0, null); // draw the background
}