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.

  • Cambiar el color de la pista
  • Implementar ListView en los widgets Android
  • Widget de la aplicación: ¿puedes especificar un tamaño mínimo y un tamaño predeterminado?
  • Cambiar el color de fondo del widget de la aplicación por programación
  • Restaurar Administrador de alarmas después de reiniciar el teléfono
  • ¿Cómo crear un widget de Android con opciones?
  • Cómo quitar el relleno ImageButton de forma programática?
  • ¿Cómo editar / cambiar la vista desde el diseño en RemoteView o crear RemoteView desde la vista?
  • ¿Cómo eliminar el widget cuando la aplicación se desinstala en Android?
  • Widget android con varios botones
  • Cómo incrustar widget de SoundCloud en la aplicación para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.