1

我有一个透明的 PNG 图像,代表一个带有蓝色光芒的蓝牙图标,从 Photoshop 导出:

在此处输入图像描述

在 HTC Desire 上,创建了一个简单的图像视图,并将 PNG 用作位图。如果图像视图周围的背景是白色的,则细微差别之间存在差异。如果背景为黑色,则隐藏差异。 在此处输入图像描述

如果我使用 ADB 进行屏幕截图,则问题不可见: 在此处输入图像描述

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

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

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

我已经尝试使用以下参数加载位图:resample.inPreferredConfig = Config.ARGB_8888; 但是没用。

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

谢谢你的时间!

4

2 回答 2

1

您可以在设置 Activity 中的 contentView 之前设置窗口格式。

getWindow().setFormat(PixelFormat.RGBA_8888);
于 2012-02-21T11:47:58.520 回答
0

这可能与位深度无关。

您描述的“白色方块”也在您的屏幕截图中。如果您的显示器未正确校准,您可能无法在计算机显示器上看到它。

于 2014-09-03T03:39:47.153 回答