色带仅适用于 Android 4.0+

2024-04-20

在运行 Android 4.0 或 4.0.3 的模拟器上,我看到可怕的色带,而且似乎无法摆脱。在我测试过的所有其他 Android 版本上,渐变看起来都很平滑。

我有一个配置为 RGBX_8888 的 SurfaceView,并且渲染的画布中不存在条带。如果我通过在渲染结束时叠加噪声图案来手动抖动图像,我可以使渐变再次平滑,尽管显然会以性能为代价,但我宁愿避免这种情况。

因此,乐队是稍后推出的。我只能假设,在 4.0+ 上,我的 SurfaceView 在绘制和显示之间的某个点被量化为较低的位深度,并且我可以从屏幕截图中看到渐变一次步进 8 个值每个通道,建议量化为 555(而不是 565)。

我将以下内容添加到我的 Activity onCreate 函数中,但没有什么区别。

getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);

我也尝试将上面的内容放在 onAttachedToWindow() 中,但仍然没有任何变化。

(我相信 RGBA_8888 是 2.2 及更高版本的默认窗口格式,因此显式设置该格式对 4.0+ 没有影响也就不足为奇了。)

这就留下了一个问题,如果源是 8888,目标是 8888,那么是什么引入了量化/带化,为什么它只出现在 4.0+ 上?

非常令人费解。我想知道是否有人可以提供一些线索?


试试dis..

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.gradient, options);

findViewById(R.id.main).setBackgroundDrawable(new BitmapDrawable(gradient));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

色带仅适用于 Android 4.0+ 的相关文章

随机推荐