设置
我定义了以下颜色资源
<color name="background">#333333</color>
我将它应用到 LinearLayout( Activity 的 Root View )上:
<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 比应有的颜色更暗。 Canvas 生成的颜色是 #313131
而不是 #333333
最佳答案
问题是 SurfaceView
未使用 32 位颜色渲染。
您需要获取 SurfaceView
的 SurfaceHolder
。这可以通过 View 本身的 getHolder()
来实现。
然后只需将其设置为 32 位模式:
getHolder().setFormat(PixelFormat.RGBA_8888);
关于Android: Canvas 上的颜色与 View 上的颜色看起来不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24417869/