在SurfaceView中绘制颜色f3f3f3(background_holo_light)的矩形,但设备显示不同的颜色f7f3f7!有什么想法吗? Android的

时间:2014-07-09 17:38:35

标签: android android-canvas

我有扩展SurfaceView的MySurfaceView。我在MySurfaceView中绘制一个矩形作为背景。

Paint p = new Paint();
p.setColor(0xfff3f3f3);
canvas.drawRect(0f, 0f, bgWidth, bgHeight, p);

fff3f3f3是background_holo_light。我希望MySurfaceView的背景颜色等于我其他UI组件的背景颜色。

然而,MySurfaceView的背景颜色实际上是Nexus 5中的fff7f3f7。:(

我怎么知道这个?我通过DDMS制作截图,打开GIMP,拾取颜色。

然后我尝试了其他几个值。两者都上下起伏。


UP:

p.setColor(0xfff3f3f3);

原来是f7f3f7。 :(

p.setColor(0xfff4f4f4);

原来是f7f7f7。 :(

p.setColor(0xfff6f6f6);

原来是f7f7f7。 :(

p.setColor(0xfff7f7f7);

原来是f7f7f7。


DOWN:

p.setColor(0xfff0f0f0);

原来是f7f3f7。 :(

p.setColor(0xffefefef);

原来是efefef。


任何想法为什么??我只是想要background_holo_light或f3f3f3的颜色。


编辑1 - 与屏幕截图相关的问题?

我的其他用户界面组件,例如RelativeLayout,具有属性" android:background"是background_holo_light(f3f3f3)。这些UI组件在Nexus 5的屏幕截图中显示正确的颜色(f3f3f3)。顺便说一句,屏幕截图由DDMS以PNG格式捕获。

换句话说,我觉得Android绘制RelativeLayout的方式与SurfaceView中Android绘制矩形的方式不同。

4 个答案:

答案 0 :(得分:0)

如果你想要f3f3f3,你应该简单地说:

p.setColor(0xfff3f3f3);

在此页面中,您可以看到值:

http://encycolorpedia.com/f3f3f3

答案 1 :(得分:0)

尝试:

p.setColor(Color.parseColor("#fff3f3f3"))

答案 2 :(得分:0)

您的颜色具有Alpha值(透明度)。当你拍摄截图时,你会保存一个没有alpha值的图像(jpg)。

这意味着在您的应用程序中,您可以在屏幕截图中获得真正的彩色蝙蝠,并获得不同的颜色。

答案 3 :(得分:0)

setDither(true)解决了我的问题。 参考:http://developer.android.com/reference/android/graphics/Paint.html#setDither(boolean)

在这篇文章中感谢大家。