GIF transparente en Android ImageView

Estoy intentando exhibir la imagen transparente del GIF en mi app sin éxito. Puedo conseguir descargar y exhibir el icono en un ImageView pero con el fondo blanco en vez de transparente.

Ya he probado estas soluciones sin éxito: Convertir GIF a PNG programatically

¿Alguien ha descubierto cómo mostrar la imagen GIF con transparencia? Estoy usando el SDK de Android 18.

Aquí hay una solución que ha funcionado para mí. No es una buena solución. Es posible que no funcione en todos los casos y que exista una sobrecarga significativa en el procesamiento de imágenes. Ojalá alguien encuentre una solución mejor.

En mis pruebas, las imágenes GIF en 4.4 tienen valores de transparencia como blanco (-1) o negro (-16777216). Después de cargar un mapa de bits, puede convertir los píxeles blanco / negro de nuevo en transparente. Por supuesto, esto sólo funcionará si el resto de la imagen no utiliza el mismo color. Si lo hace entonces usted también convertirá partes de su imagen a transparente que no eran transparentes en la imagen original. En mi caso esto no fue un problema.

Puede utilizar el siguiente código para convertir píxeles blancos o negros en transparente.

Bitmap bitmap = BitmapFactory.decodeStream(inputStream); bitmap = eraseBG(bitmap, -1); // use for white background bitmap = eraseBG(bitmap, -16777216); // use for black background 

 private static Bitmap eraseBG(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; } 

Nota: Tuve que copiar el mapa de bits a una nueva imagen ARGB_8888 para que esto funcione. Incluso al cargar el mapa de bits como mutable, todavía no podía modificar los píxeles. Esto es en parte por qué hay tanta sobrecarga.

Puede usar GIMP (software GNU de fuente de opern) para convertir un GIF a PNG. Instale el software, abra el GIF, y luego exportarlo como un PNG.

Puede utilizar GifDecoder de android-gifview en lugar de BitmapFactory para decodificar GIFs:

 GifDecoder gd = new GifDecoder(); gd.read(new FileInputStream(filename)); return gd.getBitmap(); 

Esto funciona para mi.

  • Problema con Android OptionsMenu, el fondo siempre es transparente
  • Android WebView transparente en la parte superior de VideoView
  • Android Google Maps transparencia
  • Marco transparente tostado
  • Totalmente transparente ActionBarSherlock utilizando el tema
  • Cómo hacer Android Webview Background Transparente en KITKAT (4.4)
  • AChartEngine fondo transparente
  • Transparent InputMethod para Android
  • Android: hacer que todo alrededor de Dialog sea más oscuro que el predeterminado
  • Mostrar una actividad transparente en Android?
  • Android Image Dialog / Popup mismo tamaño que la imagen y sin frontera
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.