过去,我是本机编写的一些Android应用程序,但我发现默认像素格式经常会导致条纹(我相信,有时甚至会是RGBA_565)。我现在才刚刚开始学习本机反应,并且发现了类似的问题。至少在我的情况下,React Native BackgroundImages似乎遭受了色带的困扰。
我已经阅读了一些有关ReactActivityDelegate
的内容,但是无法找到一种通过委托方法设置像素格式的方法。我在getWindow().setFormat(PixelFormat.RGBA_8888)
中尝试过onAttachedToWindow
,但似乎没有任何效果,至少在ReactActivity
中没有效果。
我已将BackgroundImage定义为<ImageBackground source={require('./my_img.png')} resizeMode='cover' style={styles.container}>...
,但是生成的图像具有明显的色带,如下所示
与原始图像进行比较,供参考,我在Arch Linux上模拟了Pixel 2 XL,这就是图像中反映的内容。
由于不推荐使用Drawable.setDither(boolean)并且该属性现在被忽略,据我所知,React Native内容视图未绘制在SurfaceView上,从该视图可以访问SurfaceHolder并定义PixelFormat,我是不知道如何强制采用RGBA_8888像素格式或以任何其他方式消除色带。
在没有显式定义PixelFormat的情况下,会出现色带现象,但是鉴于对本机代码的访问有限,我不知道如何为React Native Android应用程序定义PixelFormat。有什么想法吗?