2014-07-11 181 views
0

我创建了一个饼图SurfaceView组件。当我将背景颜色设置为#fff0f0f0时,屏幕上的颜色呈现粉红色。当我截取图像并将其加载到绘图包中时,十六进制颜色值为f7f3f7。我使用下面的代码来清除背景;Android画布背景颜色与颜色值不匹配

int backgroundColour = getResources().getColor(R.color.grey); 

Paint colour = new Paint(); 
colour.setAntiAlias(true); 
colour.setColor(backgroundColour); 

canvas.drawColor(colour.getColor()); 

这就是在我打电话后才被调用;

surfaceHolder.lockCanvas(null) 

我找不出什么原因导致了这个问题。 alpha通道设置为FF,所以不应该有任何东西从背后透出。

只是要注意我已经使用和不使用Alpha通道

回答

3

由于历史原因尝试,对于一个SurfaceView的默认颜色格式为RGB_565,这可能会导致时髦的前瞻性灰色(更不用说条带)。

您可以使用SurfaceHolder#setFormat()调用将颜色格式更改为RGB_888或RGBA_8888

+0

很酷,谢谢 - 听起来很像。我将在星期一重新开始工作时检查。在scrollview中使用surfaceview时似乎存在很多问题。滚动时上方和下方的黑条(我已经在负边缘进行黑客修复)。随机出现的黑色矩形(用透明背景色固定)。滚动时似乎也会出现松紧带影响,就好像表面视图无法跟上一样。 – vilvic

+0

SurfaceManager窗口(位置,大小)由WindowManager处理,例如,将SurfaceView放在滚动列表中并不是一个好主意。 TextureView将正常工作。如果您确实需要详细信息,请参阅https://source.android.com/devices/graphics/architecture.html。 – fadden

+0

它运作良好。我从SurfaceView切换到TextureView,并解决了很多其他问题。我还有一个问题,ScrollView有一个从上到下的渐变(从灰色到白色)。当我将背景颜色设置为灰色以尝试匹配ScrollView时,TextureView的顶部匹配,但底部并不是因为下面更白。感谢您的帮助,它节省了大量时间。 – vilvic