ImageView中图像的透明部分变成黑色

在Android KitKat(Nexus 7)中显示透明图像时有问题,在nexus 4(KitKat)和其他以前的Android操作系统中可以,这里的图像:

在这里输入图像说明

和ImageView布局:

<ImageView android:id="@+id/avatar" android:layout_width="35dp" android:layout_height="35dp" android:layout_gravity="center_vertical" android:layout_marginLeft="21dp" android:padding="3dp" android:src="@drawable/icon_button_profile_new" android:tag="@string/avatar" /> 

在这里的Nexus 7(Android 4.4)上运行的截图, 在这里输入图像说明

另外,我使用毕加索从URL下载和caching图像。

Solutions Collecting From Web of "ImageView中图像的透明部分变成黑色"

经过一些尝试:首先我尝试使用图像作为资源可绘画,它仍然发生(透明部分的图像变成黑色),其次我把图像转换为PNG图像,它是工作,所以问题是在文件types(GIF )。 因为在我的真实应用程序从服务器获得的图像,我不能像往常一样在png格式请求图像,我使用这个链接的解决scheme: 在Android ImageView透明的GIF

只显示一个图像很简单(就像在我的问题中),因为我使用毕加索我使用目标从图像化身删除黑色,就像这样:

 target = new Target() { @Override public void onPrepareLoad(Drawable arg0) { } @Override public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { if (Build.VERSION.SDK_INT == 19/*Build.VERSION_CODES.KITKAT*/){ Bitmap editedavatar = AndroidUtils.eraseColor(bitmap, -16777216); avatar.setImageBitmap(editedavatar); } } @Override public void onBitmapFailed(Drawable arg0) { avatar.setImageResource(R.drawable.ic_profile_default); 

擦除颜色是静态的方法

 public static Bitmap eraseColor(Bitmap src, int color) { int width = src.getWidth(); int height = src.getHeight(); Bitmap b = src.copy(Config.ARGB_8888, true); b.setHasAlpha(true); int[] pixels = new int[width * height]; src.getPixels(pixels, 0, width, 0, 0, width, height); for (int i = 0; i < width * height; i++) { if (pixels[i] == color) { pixels[i] = 0; } } b.setPixels(pixels, 0, width, 0, 0, width, height); return b; } 

但是因为我使用毕加索在一个列表视图中显示图像,所以我在ViewHolder中使用Target来实现目标 ,到目前为止效果非常好。

 Try this <ImageView android:id="@+id/avatar" android:layout_width="35dp" android:layout_height="35dp" android:layout_gravity="center_vertical" android:layout_marginLeft="21dp" android:padding="3dp" android:src="@drawable/icon_button_profile_new" android:background="#00000000" android:tag="@string/avatar" /> 

尝试这个 :

 android:background="@android:color/transparent" 

要么

 imageView.setBackgroundColor(Color.TRANSPARENT); 

希望这可以帮助。