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

概述我的问题是,当在SurfaceView中绘制一个简单的测试图像(带有渐变填充的矩形)时,渐变具有颜色条带.在简单的扩展视图中使用相同的渐变绘制完全相同的矩形时,渐变看起来非常平滑,并且与我期望的32位颜色一样好. 这是在同一个Activity中的同一布局中使用测试View放置的测试SurfaceView并排发生的. 有关信息,在活动类我打电话window.setFormat(PixelFormat 我的问题是,当在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 – Gradient在SurfaceView中显示为带状,但在普通视图中看起来非常流畅全部内容,希望文章能够帮你解决android – Gradient在SurfaceView中显示为带状,但在普通视图中看起来非常流畅所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1135879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存