我定义了以下颜色资源
<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));
问题是SurfaceView / Canvas上的颜色比LinearLayout颜色更深。
如果重要,请minSdkVersion: 10
和targetSdkVersion: 19
感谢。
检查生成的颜色,我确定LinearLayout正在生成正确的颜色,并且Canvas比它应该更暗。画布生成颜色#313131
而不是#333333
答案 0 :(得分:1)
问题是SurfaceView
没有使用32位颜色进行渲染。
您需要获取SurfaceHolder
的{{1}}。这可以通过视图本身的SurfaceView
来实现。
然后将其置于32位模式:
getHolder()