1

目前,我只有一个带有几个按钮的相对布局,并设置了android:background="#FFFFFF"

我想创建一个背景图像来代替使用,但是我不确定我应该创建什么尺寸的图像。

我知道对于菜单图标/启动器图标,我需要为 ldpi、mdpi 和 hdpi 创建 3 组。

但是,对于背景,这些像素大小应该是多少?

我将创建一个类似于以下的背景:

在此处输入图像描述

4

3 回答 3

2

不仅要担心不同的屏幕密度,还要担心不同的屏幕尺寸。每个配置都有一个背景图像是不切实际的。相反,我建议使用 java 代码拍摄图像并将其缩放到屏幕尺寸,无论屏幕尺寸或分辨率如何。

在这个例子中,我从一个游戏中提取,我有一个位图 bg,屏幕分辨率保存为 maxwidth 和 maxheight。我将位图与背景进行比较,然后设置一些比例值。oldx/oldy 确定自上次检查以来屏幕分辨率是否发生了变化。我创建一个矩阵并调整位图的大小,将其保存为 bgresized,然后设置我的 oldx/oldy,以便我的下一次更新准备好在需要时重新缩放。然后,我绘制新的背景

这段代码我使用了一个画布,您可以在视图的 onDraw(Canvas canvas) 方法中使用它,或者您不喜欢画布,您可以将其更改为在 onCreate 和方向更改中使用它,或类似的东西

checkbackgroundsize();
bgwidth = bg.getWidth();
    bgheight = bg.getHeight();
    scalex = (float)maxwidth / (float)bgwidth;
    scaley = (float)maxheight / (float)bgheight;
    if ((oldx != scalex) || (oldy != scaley)){//if the screen changed sizes
        Matrix matrix = new Matrix();
        matrix.postScale(scalex, scaley);
        bgresized = Bitmap.createBitmap(bg, 0, 0, bgwidth, bgheight, matrix, true);
        oldx = scalex;
        oldy = scaley;
    }

    canvas.drawBitmap(bgresized, 0, 0, null);//draw resized background
于 2011-04-16T02:35:00.530 回答
1

您应该阅读Android 开发者指南的最佳实践中的Supporting Multiple Screens 。

于 2011-04-15T23:20:27.303 回答
0

我还建议查看 Android 的9 个补丁可绘制对象(尽管您的图形可能太复杂了)

于 2011-04-16T03:02:36.980 回答