我的问题是,当在SurfaceView中绘制一个简单的测试图像(带有渐变填充的矩形)时,渐变具有颜色条带.在简单的扩展视图中使用相同的渐变绘制完全相同的矩形时,渐变看起来非常平滑,并且与我期望的32位颜色一样好.
这是在同一个Activity中的同一布局中使用测试View放置的测试SurfaceView并排发生的.
有关信息,在活动类我打电话window.setFormat(PixelFormat.RGBA_8888)切换活动到32位颜色,因为这是在过去的溶液,消除在梯度(绑扎然而,笔者认为,这是没有某个Android级别需要更长时间,默认为32位).我的minSdkVersion是8.
出现在简单扩展View和SurfaceView的onDraw()中的测试代码是:
Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setAntiAlias(false); paint.setFilterBitmap(false); paint.setDither(false); Shader shader = new LinearGradient( 0,200,new int[]{0xff150d2f,0xff432b96},null,Shader.TileMode.CLAMP ); paint.setShader(shader); canvas.drawRect(0,getWidth(),getHeight(),paint);
以下是显示上面的SurfaceView和下面的普通View的屏幕截图.我意识到这个例子中的条带非常微妙;当渐变扫过较小的颜色带时,它会更加明显.
有什么建议吗?
崔佛