para online hacer gifs fotos crear con como calidad app aplicaciones aplicacion animados alta android jquery-animate gif animationdrawable

android - hacer - crear gif online alta calidad



¿Cómo animar imágenes.gif en un android? (6)

Bueno, pude animar imágenes de Android usando este simple código:

canvas.drawColor(Color.WHITE); super.onDraw(canvas); long now=android.os.SystemClock.uptimeMillis(); System.out.println("now="+now); if (moviestart == 0) { // first time moviestart = now; } System.out.println("/tmoviestart="+moviestart); int relTime = (int)((now - moviestart) % movie.duration()) ; System.out.println("time="+relTime+"/treltime="+movie.duration()); movie.setTime(relTime); movie.draw(canvas,this.getWidth()/2-20,this.getHeight()/2-40); this.invalidate(); }


Se implementó fácilmente utilizando Movieview.

o puedo darte un tutorial para estas cosas

Aquí está el código para xml:

<ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/minepic" />

Aquí el minepic es una imagen animada gif, pero después de ejecutar la aplicación solo muestra una imagen estática.

¿Hay alguna solución sobre cómo animar las imágenes .gif en la aplicación de Android?


No es una buena práctica usar Threads (es decir, View.post (nuevo Runnable)) porque la vista podría haber cambiado durante el tiempo en que se dibujará el dibujo (un caso utiliza la imagen animada en ListView con elementos que contienen diferentes imágenes de fondo) , que puede causar una excepción ClassCastException si ImageView, en el momento en que se ejecuta el subproceso, tiene un fondo que no es un recurso animado.

ImageView loadingImg = (ImageView)v.findViewById(R.id.image); loadingImg.setBackgroundResource(R.drawable.progressdialog); loadingImg.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View v) { AnimationDrawable loadingAnimation = (AnimationDrawable) v.getBackground(); loadingAnimation.start(); } @Override public void onViewDetachedFromWindow(View v) { } });

Ejemplo mostrado here


No recomendaría el uso de clases de Movie o WebView , sino ImageView lugar de una fuente dibujable configurada en animation-list . Mira el ejemplo ( mydrawable.xml ):

<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/image_1" android:duration="100" /> <item android:drawable="@drawable/image_2" android:duration="100" /> <item android:drawable="@drawable/image_3" android:duration="100" /> </animation-list> // in your layout : <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/my_drawable" />

Obviamente, tienes que dividir tu .gif en imágenes separadas antes de usar esta solución.


Para dar una respuesta precisa y completa aquí es lo que necesita hacer paso a paso:

  1. Necesitará tener diferentes imágenes .png que actuarán como cuadros para su animación. Guardarlos en la carpeta res/drawable .

  2. Cree el archivo anim.xml en la carpeta res/drawable con el siguiente contenido:

    <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/image_3" android:duration="250" /> <item android:drawable="@drawable/image_2" android:duration="250" /> <item android:drawable="@drawable/image_1" android:duration="250" /> <item android:drawable="@drawable/image" android:duration="250" /> </animation-list>

  3. En el archivo xml diseño en el que desea mostrar la animación:

    //... <ImageView android:id="@+id/iv_animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:contentDescription="Animation" /> //...

  4. En el archivo Java que carga el archivo xml de diseño y llama a setContentView :

    //... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView animImageView = (ImageView) findViewById(R.id.iv_animation); animImageView.setBackgroundResource(R.drawable.anim); animImageView.post(new Runnable() { @Override public void run() { AnimationDrawable frameAnimation = (AnimationDrawable) animImageView.getBackground(); frameAnimation.start(); } }); // ... other code ... } // ...

Para detener la animación, puede llamar a .stop() en AnimationDrawable . Para más detalles sobre los métodos disponibles, puede ver la documentación de AnimationDrawable . Espero que ayude a alguien.


Según tengo entendido, su imagen GIF no se mueve, por lo que ese es el comportamiento nativo de Android si trata a GIF como una imagen estática. Para mí, la mejor solución (¡no reinventar la rueda!) Fue la biblioteca de código abierto github.com/koral--/android-gif-drawable . Verifique su README, todo es muy simple: agregue dependencia para gradle y use (en XML o código). Ejemplo de uso en Java:

GifDrawable gifFromResource = new GifDrawable( getResources(), R.drawable.anim );


And i think this is the one way of solution by writing the anim-space.xml In which the slices of the image are added to the items one by one and setting that xml to the imageview of our layout xml.

developer.android.com/reference/android/graphics/drawable/…

En este enlace de desarrolladores se define claramente.