Android:画布与视图的颜色看起来不同

时间:2014-06-25 20:22:58

标签: android android-canvas

设置

我定义了以下颜色资源

<color name="background">#333333</color>

我将它应用于LinearLayout(活动的根视图):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     ...
     android:background="@color/background">

我也将它作为Surface / Canvas的背景应用:

private void doDraw(Canvas canvas) {
    canvas.drawColor(mContext.getResources().getColor(R.color.background));

结果

color difference

问题是SurfaceView / Canvas上的颜色比LinearLayout颜色更深。

如果重要,请minSdkVersion: 10targetSdkVersion: 19

感谢。

更新

检查生成的颜色,我确定LinearLayout正在生成正确的颜色,并且Canvas比它应该更暗。画布生成颜色#313131而不是#333333

1 个答案:

答案 0 :(得分:1)

问题是SurfaceView没有使用32位颜色进行渲染。

您需要获取SurfaceHolder的{​​{1}}。这可以通过视图本身的SurfaceView来实现。

然后将其置于32位模式:

getHolder()