reproducir la imagen de Gif descargada en android

Estoy descargando una imagen GIF en mi aplicación desde el servidor y luego la estoy mostrando con ImageView pero no estaba animada. ¿Hay alguna otra forma de reproducir la imagen GIF animada descargada? Gracias por adelantado .

Estoy utilizando la Vista personalizada a continuación en lugar de la Vista de imagen.

 public class SampleView extends View { private Movie mMovie; private long mMovieStart; public SampleView(Context context) { super(context); setFocusable(true); java.io.InputStream is; is = context.getResources().openRawResource(R.drawable.girl_dances); mMovie = Movie.decodeStream(is); } public SampleView(Context context, AttributeSet attrSet) { super(context, attrSet); setFocusable(true); java.io.InputStream is; is = context.getResources().openRawResource(R.drawable.girl_dances); mMovie = Movie.decodeStream(is); } public SampleView(Context context, AttributeSet attrSet, int defStyle) { super(context, attrSet, defStyle); setFocusable(true); java.io.InputStream is; is = context.getResources().openRawResource(R.drawable.girl_dances); mMovie = Movie.decodeStream(is); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(0x00000000); Paint p = new Paint(); p.setAntiAlias(true); long now = android.os.SystemClock.uptimeMillis(); if (mMovieStart == 0) { // first time mMovieStart = now; } if (mMovie != null) { int dur = mMovie.duration(); if (dur == 0) { dur = 1000; } int relTime = (int) ((now - mMovieStart) % dur); mMovie.setTime(relTime); mMovie.draw(canvas, getWidth() / 2 - mMovie.width() / 2, getHeight() / 2 - mMovie.height() / 2); invalidate(); } } } 

Diseño XML:

  

Después de algunas investigaciones, parece que la mejor (o la más fácil) solución es usar un WebView:

ex:

poner myAnimatedGif.gif en la carpeta de activos.

crear una vista web xml:

  

luego cargue el archivo gif en la vista web:

  WebView view = (WebView) findViewById(R.id.myWebView); view.loadUrl("file:///android_asset/myAnimatedGif.gif"); 

¡Disfruta!

Otra solución es usar este tipo de biblioteca: https://github.com/koral–/android-gif-drawable

Puede lograr esto con un WebView. Esto es lo que uso:

Un LinearLayout personalizado que ancla una clase WebView

 import android.view.View; import android.webkit.WebView; import android.widget.LinearLayout; import android.widget.TextView; public class Spinner extends LinearLayout{ public Spinner(Context context) { super(context); // TODO Auto-generated constructor stub View.inflate(context, R.layout.spiner, this); WebView web = (WebView) findViewById(R.id.web); web.loadUrl("file:///android_asset/booting.gif"); } public void setText(String text){ TextView t = (TextView) findViewById(R.id.txtloading); t.setText(text); } public void refresh(){ WebView web = (WebView) findViewById(R.id.web); web.loadUrl("file:///android_asset/booting.gif"); } } 

El archivo XML R.layout.Spinner:

      

Puedes usar como

 Spinner spinner = new Spinner(this); myContainer.addView(spinner); 

Puede llamar a refresh on spinner para garantizar la reproducción de la imagen:

 spinner.refresh(); 

Espero que ayude.