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.

3 Solutions collect form web for “GIF transparente en Android ImageView”

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.

  • Hacer transparente la barra de herramientas
  • GLSurfaceView - cómo hacer el fondo translúcido
  • Transparente LinearLayout en Android
  • AppBarLayout transparente y CollapsingToolbarLayout
  • Cómo hacer lienzo área de dibujo transparente en android?
  • Crear un diálogo transparente encima de la actividad
  • Vista de texto de Android sobre imagen con fondo transparente
  • Dibuja un círculo transparente sobre un lienzo lleno de android
  • Necesita una barra de estado completamente transparente
  • Problema con Android OptionsMenu, el fondo siempre es transparente
  • Android Opengl 2.0 Alpha Mezcla tema - texturas medio transparentes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.