在Android上透明PNG中渲染阴影的质量问题

3
使用具有细微渐变阴影的透明PNG图像时,在Android屏幕周围始终会出现阴影边缘线。 它在模拟器或Exclipse中不显示。 请参见照片。
我想知道是否有改进的方法。 这与Android屏幕无法显示所有24位颜色还是缩放和重新采样图像有关?
在此示例中,图像加载到ImageButton视图中。 我将其尝试为源或背景,质量相同。 alt text
1个回答

11
你看到的这个现象称为"色带效应",是由于你的显示器为16位像素而引起的。
解决这个问题的最佳方法是在Photoshop或Paint.NET中向图像资源添加一些“噪点”。
另外,你可以通过在活动的`onCreate()`方法中添加以下行来将窗口设置为32bpp:在`super.onCreate()`和`setContentView()`之间添加。:
    getWindow().setFormat(PixelFormat.RGBA_8888);

@Reuben:有趣,我不知道这个技巧。我也遇到过色带问题,使用setFormat方法有什么具体的缺点吗? - Kevin Coppock
2
缺点是您的窗口需要两倍的RAM,而且渲染可能会变慢(特别是软件渲染),因为访问的内存增加了两倍。 - Reuben Scratton
1
如上两条评论所预测的那样。另外值得注意的是,Google已经悄悄地将8888设置为默认格式(从Honeycomb开始,如果我没记错的话)。 - Reuben Scratton
@ReubenScratton 很好的回答。但是你能否再多加一些关于这部分的信息 - 最好的解决方法是在Photoshop或Paint.NET中向您的图像资产添加一些“噪点” - Krishnabhadra
1
“噪点”是指在位图图形软件(如Photoshop、Gimp等)中发现的效果。向图像添加“噪点”是为了添加随机斑点,这在这种情况下有助于打破在16bpp显示器上纯渐变时经常出现的不良带状效果。 - Reuben Scratton
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接