我遇到了关于PNG文件绑定的问题。深入研究这个问题已经产生了两个解决方案。两者都是有意义的,但他们并没有。我发现的解决方案:
1)将PNG文件移动到“raw”文件夹中。这可以防止AAPT“优化”图像,从而导致条带化。
2)将Activity的窗口的像素格式更改为RGBA_8888(即在onCreate中添加此行“getWindow()。setFormat(PixelFormat.RGBA_8888)”)。在Android 2.2及更低版本中,默认像素格式为16位(565)。
我已经尝试过这两种方法并且它们在我的图像中纠正了条带效果,但是现在我对Android正在做的事情更加困惑。
一方面,如果我将PNG留在可绘制文件夹中,它将被“优化”,从而在图像中产生条带效果。当我将像素格式更改为32位时,它会神奇地消失。如果图像是“优化的”,我会期望保留条带。
另一方面,如果我将PNG移动到原始文件夹,它将保留漂亮的渐变并显示良好,即使pixelFormat应该是16位。
如果有人对正在发生的事情有任何了解,我将不胜感激。
谢谢,
-Dan
答案 0 :(得分:8)
我相信它非常简单:
您必须将Activity的像素格式(RGBA_8888)视为位图的DEFAULT优化。
如果未设置,则在2.2之前,默认情况下会将位图压缩为RGB_565。
但是如果您要以编程方式创建位图并将其设置为RGBA_8888,则应用程序将使用它。
将位图放在原始文件夹中时也是如此:即使默认的PixelFormat设置为RGB_565,活动也会按原样使用它而不“优化”它。
当你将位图放在原始文件夹中时,它根本不会被压缩并按原样使用,即使默认的PixelFormat仍然是RGB_565。