我有扩展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绘制矩形的方式不同。
答案 0 :(得分:0)
答案 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)。
在这篇文章中感谢大家。