2011-10-02 55 views
1

我有表示与蓝色辉光蓝牙图标,透明的PNG图片,从Photoshop出口:位深度的问题(白不白)

enter image description here

在一个的HTC Desire,一简单的imageview被创建,PNG被用作位图。 如果imageview背景为白色,则细微之处有差异。如果背景是黑色,则隐藏差异。 enter image description here

如果我使用ADB做一个屏幕捕捉,问题是不可见的: enter image description here

可能的原因: 屏幕方面采用比什么是用于位图高位深度率。例如。 RGB24与RGB16。通过这样做,对于白色,屏幕具有比位图编码可能更多的细微差别。显示时,位图的像素近似于新的位深度要求,但由于使用的近似值而无法正确匹配背景细微差异。例如。 RGB16-> RGB24将意味着C24 = 255 * C16/31。

如果我使用屏幕捕获软件,位深度可能缩小到较窄的位深度值(RGB16),所以所有的细微差别合并在一起并近似于更简单的16位颜色。这就是为什么我用照相机来说明问题。

问题是如何解决这个问题?

我已经尝试使用参数加载位图,例如: resample.inPreferredConfig = Config.ARGB_8888; 但没有用。

我只需要显示一个透明的图像,比如带有GFX效果的图标:阴影,发光等等。我也很乐意使用灰度蒙版(Black => White mask来表示像素透明度,但没有找到一种方法)。

谢谢你的时间!

+0

对不起,但我没有看到你说的完全细微差别已经改变。你能更特别吗? –

+0

您可以在第二张图片(使用相机拍摄的图片,而不是截图)中看到两个蓝牙图标周围的不同白色细微差别。蓝牙图标似乎有一个白色的方形,而不是一个很好的透明背景。 – radhoo

回答

0

这可能与位深度无关。

你描述的“白色方形”也在你的截图中。如果您的显示器没有正确校准,您可能无法在电脑显示器上看到它。

+0

这是一个老问题,现在我的视网膜显示器比之前使用的要好得多。这个问题似乎是John所确定的问题,所以我将其标记为答案。 – radhoo

1

您只需在活动设置内容查看之前设置窗口格式。

getWindow().setFormat(PixelFormat.RGBA_8888); 
+0

不幸的是,也没有帮助。 – radhoo