Android中糟糕的背景图像质量

我正在尝试在我的活动中放置背景,但图像质量不是预期的。

图像在蓝色条纹上方有一个简单的渐变,目前看起来像这样:

LinearLayout背景

我的活动布局:

  

后台描述符( drawable/background_register ):

  

目前我有一个描述BitmapDrawable的XML文件,它是actitivy的LinearLayout背景。 但我已经尝试了迄今为止我发现的一切。 启用了抖动,抗锯齿,平铺,RGBA_8888模式…您可以命名。 有没有人有我可以尝试的不同解决方案或想法? 我会非常感激的。

顺便说一句,我目前正在用Galaxy S II开发应用程序。

首先,确保您的原始图像看起来不错,这样您就不会从那里得到问题。
然后,在onCreate()方法中,执行:

代码1:

 getWindow().getDecorView().getBackground().setDither(true); getWindow().setFormat(PixelFormat.RGBA_8888); 

推荐使用:

。getWindow()addFlags(WindowManager.LayoutParams.FLAG_DITHER);

要将图像显式加载为32位图像(RGBA-8888配置),请在加载视图的位置添加以下内容:

码2:

 BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.gradient, options); findViewById(R.id.main).setBackgroundDrawable(new BitmapDrawable(gradient)); 

不同方法之间的比较:(这些都是生成的应用程序的截图)

我的源图像(左侧64种颜色,右侧24位):
image1和image2:
64色24位
1:从布局XML设置为背景的原始64色图像(image1):
原始图像
2:使用code1的相同图像(image1):
抖动的图像
3:使用code1code2的相同图像(image1):
显式32位
4:image2,加载了code1code2 (在这种情况下,抖动并不重要,因为源和目标都使用每种颜色8位):
更高的原始品质

请注意图像3中的结果工件如何已存在于原始图像中。

注意:如果有人知道如何缩小图像,请随时编辑此post…

问题是您的PNG已转换为256色,在您选择的ZIP工具中打开您的APK并手动检查。 如果是这种情况,请确保您的PNG具有:

  1. 一个alpha通道
  2. 一个像素,略微透明

这应该可以防止它被转换为索引调色板。

它看起来像是一个图像问题。 保存图像和格式的设置是什么? 它看起来像我正在寻找的压缩文物。