2011-01-14 18 views
12

Por lo que sé, podemos crear notificaciones en Android usando el Administrador de notificaciones + vistas remotas.Animación en la barra de notificaciones Vista personalizada

Estoy creando una notificación para descargar archivos Mp3. Y quiero una animación al lado. Hasta ahora he aprendido de los foros que no es posible.

Sin embargo, vi Un video para una aplicación de Android que descarga y muestra animación junto a él mientras lo descarga. Enlace: http://www.youtube.com/watch?v=yNcs-sS2nFU&feature=related

¿Puede alguien decirme la mejor manera de lograrlo.

+0

El video se ve que era de Froyo o Gingerbread. Debería verificar la clase NotificationBuilder que le permite establecer un valor de progreso para lograr la barra horizontal que ve en el video. – iHearGeoff

Respuesta

24

La mejor manera que he encontrado para mostrar una animación personalizada en una notificación es utilizar una AnimationDrawable como recurso con una ID. Luego, simplemente especifique la ID del recurso dibujable cuando publique su notificación. No se necesita más código para actualizar cada fotograma de la animación. La animación dibujable maneja eso para ti.

Aquí hay un enlace a la documentación: http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

Así, por ejemplo, usted tendría que:

  1. añadir un archivo XML (como "wheelAnim.xml") a su res/dibujable/carpeta con el siguiente contenido:

    <!-- Animation frames are wheel0.png -- wheel5.png files inside the 
        res/drawable/ folder --> 
    <animation-list android:id="selected" android:oneshot="false"> 
        <item android:drawable="@drawable/wheel0" android:duration="50" /> 
        <item android:drawable="@drawable/wheel1" android:duration="50" /> 
        <item android:drawable="@drawable/wheel2" android:duration="50" /> 
        <item android:drawable="@drawable/wheel3" android:duration="50" /> 
        <item android:drawable="@drawable/wheel4" android:duration="50" /> 
        <item android:drawable="@drawable/wheel5" android:duration="50" /> 
    </animation-list> 
    
  2. Añadir dibujable cada referencia en el archivo XML que ju st creado para la lista de animación (ya sea PNG u otro formato de imagen) en la carpeta res/drawable/ también.

  3. Use el ID del recurso de la lista de animación (que en este ejemplo es "R.drawable.wheelAnim") en su código. Por ejemplo:

    Notification notification = new Notification(R.drawable.wheelAnim, null, 
        System.currentTimeMillis()); 
    
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, 
        new Intent(), 0); 
    
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    
    notification.setLatestEventInfo(this, getText(R.string.someTitle), 
        getText(R.string.someText), pendingIntent); 
    
    ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).notify(
        uid, notification); 
    
+2

He intentado dibujar dibujos animados en la nueva clase NotificationBuilder como el icono pequeño, y se ve muy bien en la barra de estado. Sin embargo, cuando abre el cajón de notificaciones, el ícono NO está animado. ¿Alguien ha tenido alguna experiencia con esto y tuvo éxito al hacer que el ícono se animara en la vista hacia abajo? – iHearGeoff

+0

¿Dónde puedo obtener esas imágenes de rueda? – Abhijit

+0

@iHearGeoff, ¿está seguro de que no es el ícono grande en la notificación cuando tira hacia abajo? –

2

En el documentation para la creación de notificaciones de la barra de estado, se dice que usted puede completar un ciclo a través de un montón de imágenes que se define en un LevelListDrawable cambiando la propiedad iconLevel del la clase Notification:

iconLevel campo

Este valor indica el nivel actual de un LevelListDrawable que se utiliza para el icono de notificación . Puede animar el icono en la barra de estado cambiando este valor a correlacionado con el dibujable definido en un LevelListDrawable. Consulte la referencia LevelListDrawable para obtener más información.

+0

Lo sé pero mi problema es animar el objeto remoteView. Lo que hago es enviar notificaciones una y otra vez, lo que da un efecto de animación. Pero el hilo se publica después de 3000 ms, y si disminuyo el valor a menos de 2000 ms. Mi emulador se cuelga después de algunas actualizaciones, y espero que el dispositivo reaccione de la misma manera. El video muestra algo muy interesante. Anima un objeto con 100ms - 500ms delays. Eso me sorprende – JehandadK

Cuestiones relacionadas