Android imageview显示绿色图像

dem*_*ock 6 android imageview android-glide

这是原始图片:

在此输入图像描述

这是使用ImageView渲染的图像:

在此输入图像描述

但是,有时当图像在旋转木马中时,向图像滑动可能会导致图像正确渲染,这更加奇怪......

在LG G3(Android 5.1)和Genymotion(Android 4.4.4)上都观察到了这种行为.我正在使用Glide库来加载图像,使用ARGB_8888解码格式:

new GlideBuilder(this).setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
Run Code Online (Sandbox Code Playgroud)

nei*_*its 7

这是一个已解决的问题305.这是一个快速回顾:

此问题仅出现在JPEG格式的图像中(质量无关紧要).看起来它的影响RGB_565要大得多ARGB_8888,因此您可能希望将DecodeFormat切换为ARGB_8888(清除应用程序数据以检查问题是否已解决).但它甚至可以出现ARGB_8888,因此请使用以下解决方案之一:

  1. 使用DiskCacheStrategy.NONE(对于本地图像)或DiskCacheStrategy.SOURCE(对于远程图像)防止Glide重新压缩图像:

    Glide.with(this)
        .load(url)
        .diskCacheStrategy(DiskCacheStrategy.SOURCE)
        .into(imageView);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用asBitmap()和自定义BitmapEncoder始终将受影响的图像压缩为PNG:

    Glide.with(this)
        .fromResource()
        .asBitmap()
        .encoder(new BitmapEncoder(Bitmap.CompressFormat.PNG,100))
        .load(R.drawable.testimg)
        .into(imageView);
    
    Run Code Online (Sandbox Code Playgroud)