Android 渐变在SurfaceView中显示为带状,但在正常视图中看起来非常平滑
我的问题是,当在Android 渐变在SurfaceView中显示为带状,但在正常视图中看起来非常平滑,android,surfaceview,Android,Surfaceview,我的问题是,当在SurfaceView中绘制简单的测试图像(带有渐变填充的矩形)时,渐变有色带。在一个简单的扩展视图中使用相同的渐变绘制完全相同的矩形时,渐变看起来非常平滑,就像我期望的32位颜色一样 这是使用测试表面视图在同一活动中的同一布局中与测试视图并排进行的 关于信息,在活动类中,我正在调用window.setFormat(PixelFormat.RGBA_8888)将活动切换为32位颜色,因为这是过去消除渐变带状的解决方案(但是,我相信在某种Android级别上不再需要,默认为32位)
SurfaceView
中绘制简单的测试图像(带有渐变填充的矩形)时,渐变有色带。在一个简单的扩展视图
中使用相同的渐变绘制完全相同的矩形时,渐变看起来非常平滑,就像我期望的32位颜色一样
这是使用测试表面视图
在同一活动
中的同一布局中与测试视图
并排进行的
关于信息,在活动
类中,我正在调用window.setFormat(PixelFormat.RGBA_8888)
将活动切换为32位颜色,因为这是过去消除渐变带状的解决方案(但是,我相信在某种Android级别上不再需要,默认为32位)。我的minSdkVersion
是8
简单扩展视图
和表面视图
的onDraw()
中出现的测试代码是:
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(false);
paint.setFilterBitmap(false);
paint.setDither(false);
Shader shader = new LinearGradient(
0,
0,
0,
200,
new int[]{0xff150d2f,0xff432b96},
null,
Shader.TileMode.CLAMP
);
paint.setShader(shader);
canvas.drawRect(0,0,getWidth(),getHeight(), paint);
这是屏幕截图,上面显示了表面视图
,下面显示了正常的视图
。我意识到,在这个例子中,条带是非常微妙的;当渐变扫过一个较小的色带时,效果更为明显
有什么建议吗
Trev通过将其添加到SurfaceView的构造函数中,最终自己找到了解决方案:
getHolder().setFormat(PixelFormat.RGBA_8888);