目前,我只有一个带有几个按钮的相对布局,并设置了android:background="#FFFFFF"
我想创建一个背景图像来代替使用,但是我不确定我应该创建什么尺寸的图像。
我知道对于菜单图标/启动器图标,我需要为 ldpi、mdpi 和 hdpi 创建 3 组。
但是,对于背景,这些像素大小应该是多少?
我将创建一个类似于以下的背景:
目前,我只有一个带有几个按钮的相对布局,并设置了android:background="#FFFFFF"
我想创建一个背景图像来代替使用,但是我不确定我应该创建什么尺寸的图像。
我知道对于菜单图标/启动器图标,我需要为 ldpi、mdpi 和 hdpi 创建 3 组。
但是,对于背景,这些像素大小应该是多少?
我将创建一个类似于以下的背景:
不仅要担心不同的屏幕密度,还要担心不同的屏幕尺寸。每个配置都有一个背景图像是不切实际的。相反,我建议使用 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
您应该阅读Android 开发者指南的最佳实践中的Supporting Multiple Screens 。
我还建议查看 Android 的9 个补丁可绘制对象(尽管您的图形可能太复杂了)