Android RelativeLayout中的背景图像存在瑕疵

Android RelativeLayout中的背景图像存在瑕疵,android,Android,我在GIMP中为我的应用程序创建了一个background.png。它的分辨率是640x480,谷歌的分辨率似乎是默认模拟器的分辨率。我的问题是,当我使用android将背景应用于RelativeLayout:background=@drawable/bg并运行它时,图像中有很多工件。好像仿真器无法提供足够的颜色来正确显示.png。这是怎么回事 顺便说一句,这张照片没什么特别的,只是简单的线条和径向渐变 它的分辨率是640x480,由 谷歌,似乎是解决方案 对于默认仿真器 640x480甚至不是

我在GIMP中为我的应用程序创建了一个background.png。它的分辨率是640x480,谷歌的分辨率似乎是默认模拟器的分辨率。我的问题是,当我使用android将背景应用于RelativeLayout:background=@drawable/bg并运行它时,图像中有很多工件。好像仿真器无法提供足够的颜色来正确显示.png。这是怎么回事

顺便说一句,这张照片没什么特别的,只是简单的线条和径向渐变

它的分辨率是640x480,由 谷歌,似乎是解决方案 对于默认仿真器

640x480甚至不是Android系统中官方支持的分辨率,更不用说默认分辨率了。这是你的工作清单


此外,您还希望观察颜色深度。我忘记了细节,但由于LCD的限制,并非所有东西都能处理24位彩色。

我收集了3种可能的解决方案:

对于每个有问题的图像,创建并使用可在xml中绘制的位图

缺点是创建多个文件。我已经测试了其他特殊标志,包括代码更改,但没有发现任何差异

res/drawable/image\u file.xml

如果文件是png文件,则以最不明显的像素为例(例如左下角),将其不透明度更改为254,而不是255

这种方法的缺点是,它使图像占据更多的空间,并改变图像本身


android 2.3.x上的galaxy s和galaxy s2上使用的所有方法。

android似乎只支持16位颜色。此外,如果图像放置在/res/raw/而不是res/drawable/中,则不会在构建时进行优化。这对图像质量有一定的改善。@dfetter88:听起来您正在经历针对不同屏幕密度自动调整图像大小的过程。理想情况下,您可以按密度提供原始图像。如果不是,请使用raw/drawable nodpi/来拥有一个不会重新缩放的可绘制资源。
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@drawable/problematic_image" />
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inDensity = 1;
options.inSampleSize = 1;
options.inTargetDensity = 1;
options.inJustDecodeBounds = false;
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.problematic_image, options);
imageView.setImageBitmap(bitmap);