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);