android – Gradient在SurfaceView中显示为带状,但在普通视图中看起来非常流畅

前端之家收集整理的这篇文章主要介绍了android – Gradient在SurfaceView中显示为带状,但在普通视图中看起来非常流畅前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题是,当在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的屏幕截图.我意识到这个例子中的条带非常微妙;当渐变扫过较小的颜色带时,它会更加明显.

有什么建议吗?

崔佛

解决方法

最后通过将其添加到SurfaceView的构造函数中找到了解决方案:
getHolder().setFormat(PixelFormat.RGBA_8888);

猜你在找的Android相关文章