Animar la imagen .png en el widget

Descripción del problema


Estoy escribiendo una sencilla aplicación de Widget para Android, en mi Widget I Layout tengo el control ImageViewRefresh en el que he ajustado Refrescar Imagen de Imagen (Imagen Verde Abajo).

Pregunta


En algún momento ImageViewRefresh un botón ImageViewRefresh en mi Widget y el inicio de la aplicación para descargar algún contenido de Internet, mientras que la aplicación de descarga de datos en un fondo Quiero hacer algunas animaciones, como rotar mi imagen (Green Image Below). Puedo hacer eso ?

Investigaciones


He leído algunos posts sobre la animación de imágenes, pero sólo puedo encontrar animación de imágenes .gif en la aplicación, es donde una forma de girar la imagen, por ejemplo, hacer algunas imágenes giradas y cambiarlos o algo más.

Ejemplo de código

Aquí está una parte del código de mi layout mi imagen no está girando. Por qué ? (Mi imagen es simple imagen .png)

 <ProgressBar android:id="@+id/progressBarRefresh" android:layout_width="36dp" android:indeterminateDrawable="@drawable/arrow_refresh" android:layout_height="36dp" android:layout_alignTop="@+id/imageViewArrowNext" android:layout_marginRight="70dp" android:layout_toLeftOf="@+id/textViewAutherName" android:indeterminate="true" /> 

Imagen que quiero girar.

Rotar imagen

Editar: Me disculparé de antemano, pero creo que mi respuesta podría haber engañado de la pregunta:

  • Como se ha probado, el sistema no gira automáticamente el dibujable, pero hay estilos que puede cambiar para hacerlo (honestamente no recuerdo, ha sido hace 2 años en Eclair), pero puede tratar de encontrarlo.
  • La respuesta a continuación funciona (como se probó), pero NO para drawables personalizados que no girarlos.
  • Para una animación personalizada dibujable consulte aquí: Personalizada Drawable para ProgressBar / ProgressDialog
  • Pero como se mencionó en uno de los comentarios, no se supone que los widgets de aplicaciones ejecuten animaciones ¿Hay alguna manera de animar en un widget de inicio?

Puesto original

No intentes animar el widget tú mismo

Utilice un ProgressBar establecer que sea indeterminado y utilizar setIndeterminateDrawable(Drawable d); Para establecer la imagen que desea girar. (O simplemente dejar el nativo que se ve muy bien también)

Editar: aquí es cómo se vería el código:

 // in your widget update method: View v = LayoutInflater.from(context).inflate(R.layout.widget, null); ProgressBar pb = (ProgressBar) v.findViewById(R.id.progressBar1); pb.setIndeterminateDrawable(R.drawable.widget_processing); 

Esto es lo que el XML para algo como esto se vería así:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/imageView1" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/imageView1" android:layout_alignLeft="@+id/textView1" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" /> <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:indeterminate="true" /> </RelativeLayout> 

La mejor manera de animar una imagen en Android es utilizando el sistema AnimationDrawable. Para ello, necesita un xml similar al siguiente en una de sus carpetas dibujables.

 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/image1" android:duration="200" /> <item android:drawable="@drawable/image2" android:duration="200" /> <item android:drawable="@drawable/image3" android:duration="200" /> </animation-list> 

Donde image1, image2 y image3 son diferentes rasgos en sus recursos, cada uno representando un estado diferente de su imagen.

Para crear las imágenes, simplemente puede abrir la imagen con Gimp o Photoshop, y girarla unos pocos grados y exportarla en una nueva imagen, y repetirla.

Como alternativa, puede utilizar el código siguiente para girar el ImageView. Primero cree una carpeta "anim" debajo de su carpeta res y agregue un archivo rotate.xml con el siguiente contenido:

 <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:interpolator="@android:anim/linear_interpolator" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" android:duration="1000" android:startOffset="0" /> 

A continuación, importar e iniciar la animación de la siguiente manera:

 Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation); rotation.setRepeatCount(Animation.INFINITE); imageView.startAnimation(rotation); 
  • ¿Cómo implementar un evento Swipe para ver Flipper en un ViewPager?
  • ¿Cómo cambiar el fondo del widget usando RemoteViews?
  • ¿Cómo usar un textView para la cuenta atrás a cero?
  • Cómo guardar la imagen en la tarjeta SD en el botón Haga clic en android
  • El receptor de difusión onReceive () nunca se llama
  • Después de que los botones de cambio de orientación de un widget no responden
  • Widget No aparece después del reinicio del teléfono
  • Cómo establecer el color de borde para EditText para error de validación
  • Android Gallery Adaptador con MultiTouch? Galería personalizada o ImageView personalizado?
  • RemoteViews para la actualización de widget supera el error máximo de uso de memoria de mapa de bits
  • ¿Cómo obtener el código fuente de la aplicación de calendario incorporada en el emulador de ecilipse?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.