Android 混淆PNG带状解决方案

Android 混淆PNG带状解决方案,android,png,Android,Png,我遇到了PNG文件的绑定问题。深入研究这个问题产生了两种解决办法。两者各自都有意义,但在一起却没有意义。我发现的解决方案是: 1) 将PNG文件移动到“原始”文件夹中。这可防止AAPT“优化”图像,从而导致带状 2) 将活动窗口的像素格式更改为RGBA_8888(即在onCreate中添加此行“getWindow().setFormat(PixelFormat.RGBA_8888)”)。在Android 2.2及更低版本上,默认像素格式为16位(565) 我已经尝试了这两种方法,它们纠正了我图片

我遇到了PNG文件的绑定问题。深入研究这个问题产生了两种解决办法。两者各自都有意义,但在一起却没有意义。我发现的解决方案是:

1) 将PNG文件移动到“原始”文件夹中。这可防止AAPT“优化”图像,从而导致带状

2) 将活动窗口的像素格式更改为RGBA_8888(即在onCreate中添加此行“getWindow().setFormat(PixelFormat.RGBA_8888)”)。在Android 2.2及更低版本上,默认像素格式为16位(565)

我已经尝试了这两种方法,它们纠正了我图片中的带状效应,但是现在我对安卓在做什么感到更加困惑

一方面,如果我将PNG保留在可绘制文件夹中,它将被“优化”,从而在图像中产生带状效果。当我将像素格式更改为32位时,它神奇地消失了。如果图像是“优化”的话,我希望带状物会保留下来

另一方面,如果我将PNG移动到原始文件夹中,它将保持良好的渐变效果,并显示良好,即使像素格式假定为16位

如果有人对正在发生的事情有任何了解,我将不胜感激

谢谢


-丹

我相信这很简单:

您必须将活动的像素格式(RGBA_8888)视为位图的默认优化

如果未设置,则在2.2之前,默认情况下它会将位图压缩为RGB_565

但是,如果要以编程方式创建位图并将其设置为RGBA_8888,则应用程序将使用它

将位图放入原始文件夹时也适用于此:即使默认的PixelFormat设置为RGB_565,活动仍将按原样使用它,而不会“优化”它


当您将位图放在原始文件夹中时,它将不会被压缩并按原样使用,即使默认的像素格式仍然是RGB_565。

Ah,因此设备能够显示32位颜色,但如果我正确读取您的响应,则活动设置为仅使用2.3之前的16位。几乎:“但是活动设置为使用16位作为2.3之前的默认值”。说“仅”意味着它不能同时管理16位和32位,但实际上是这样。对于使用
getWindow().setFormat(PixelFormat.RGBA_8888)
方法的每个人来说:确保将该行放在
setContentView()之前
调用,否则可能无法正确使用(至少在我的2.2设备上)。