Android的颜色在手机上“混合”,在平板电脑上坚固

时间:2011-08-18 03:34:01

标签: android colors

我有一个简单的基于位图的填充算法,该算法采用颜色并用该颜色填充位图的区域。我看到的问题是,在我的手机上,一个HTC Evo 4G,当算法填充位图时,它实际上放置了不同颜色的像素,而在Galaxy Tab 10.1上,相同的代码在整个区域放置一种颜色。有些代码会更清楚。

Bitmap dst = ...
int replacementColor = Color.GRAY; //Color.DKGRAY and Color.LTGRAY also show the issue

dst.setPixel(x, y, replacementColor);
if(dst.getPixel(x, y) != replacementColor)
{
    //Only gets triggered on the HTC Evo, not the Galaxy Tab
    Log.d("Pixels don't match");
}

如果我截取设备的屏幕截图并放大,您可以清楚地看到Evo上的棋盘图案,以及Galaxy Tab上的纯色。

我确信这是一个众所周知的图形问题,但我不知道正确的术语,以了解我是如何(以及如果)解决它。当我尝试第二次填充该区域时出现问题 - 我的算法是匹配颜色,只填充相同颜色的区域,但在手机上填充灰色后,我没有相同的固体区域颜色,因此算法不会填满整个区域。

我有什么想法可以在Evo上强制使用纯色,或者确定发生了这个问题,这样我可以再次适当地填充该区域?也许我需要查看相邻的像素,并平均颜色?

1 个答案:

答案 0 :(得分:0)

抖动确实是这里的罪魁祸首,正如rsutphin所提到的那样。事实证明,我填充的位图有一个RGB_565的Bitmap.Config。复制这些位图并将配置设置为ARGB_8888可修复此抖动问题。

Bitmap bmp = orig.copy(Bitmap.Config.ARGB_8888, true);

谢谢!