Widgets de Android: Animaciones en RemoteViews?

No estoy teniendo demasiado éxito aplicando animaciones a las vistas dentro de una RemoteViews .

Para simplificar, digamos que tengo un widget con ImageView y un Button . Al hacer clic en el botón, quiero añadir una animación simple a la ImageView (una rotación por ejemplo).

Dado que no puedo obtener una referencia usando findViewById() como en una Activity y RemoteViews no tiene un setter para una animación, no estoy seguro de qué debo hacer.

Estoy pensando en reemplazar las RemoteViews por el widget con un nuevo diseño, similar al original pero éste tiene la animación ya cargada. ¿Puedo hacer esto? ¿Es posible incorporar una animación en un diseño?

El código sería algo como esto para el WidgetProvider:

 Intent intent = new Intent(context, RotateService.class); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.a_widget); views.setOnClickPendingIntent(R.id.a_button, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, views); 

A continuación, en RotateService:

 ComponentName myWidget = new ComponentName(this, MyWidget.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); RemoteViews newViews = buildNewRemoteViewsWithAnimation(); manager.updateAppWidget(myWidget, newViews); 

¿Alguna otra sugerencia?

  1. Cree una animación personalizada.
  2. Crear ProgressBar y establecer en android: indeterminateDrawable su animación.
  3. Añadir ProgressBar a la disposición de tu widget y hacerla visible (invisible)

¿Ha intentado usar una LayoutAnimation definida en xml. Esta es la única manera que he encontrado para agregar cualquier tipo de efecto de animación a mi appwidget. La desventaja es que no se puede controlar la animación, por lo que cada vez que se vuelve a cargar el diseño del widget, es decir, un OnUpdate, la animación definida en XML se disparará.

Esto está bien en algunas circunstancias pero no en todas.

Como su nombre sugiere LayoutAnimations se aplican a Layouts, por lo que es fácil especificar qué vistas desea animar anidándolas en su propio Layout. Utilicé LinearLayout en mi caso y funcionó bien.

Ver Picz en el mercado para una demostración de esto.

  • ¿Cómo eliminar el widget cuando la aplicación se desinstala en Android?
  • Establecer switchStyle - obtener error recurso no encontrado - ¿por qué?
  • Android Widget no se actualiza en la actualización de la aplicación
  • Android: reproductor de música por defecto en lockscreen
  • Android: ¿Cómo obligar a la actualización de todos los widgets de un tipo particular
  • Widget de actualización de Android desde el receptor de difusión
  • Cómo incrustar widget de SoundCloud en la aplicación para Android
  • Cómo agregar widgets múltiples en una aplicación?
  • Jquerymobile's Tap-hold no funciona en el emulador de móviles Opera Mobile
  • Android Widget onReceive no puede llamar a la clase de servicio?
  • Android Widget usando Cordova
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.