2011-01-14 21 views
12

Per quanto ne so, possiamo creare notifiche in Android utilizzando Notification Manager + Viste remote.Animazione nella barra di notifica Vista personalizzata

I am Creazione di una notifica per il download di file Mp3. E voglio delle animazioni accanto. Finora ho imparato dai forum che non è possibile.

Tuttavia, ho visto Un video per un'app Android che scarica e visualizza l'animazione accanto mentre lo scarichi. Link: http://www.youtube.com/watch?v=yNcs-sS2nFU&feature=related

Qualcuno può dirmi il modo migliore per raggiungerlo.

+0

Il video sembra come se fosse da Froyo o Gingerbread. Dovresti controllare la classe NotificationBuilder che ti consente di impostare un valore di avanzamento per ottenere la barra orizzontale che vedi nel video. – iHearGeoff

risposta

24

Il modo migliore che ho trovato per mostrare un'animazione personalizzata in una notifica è utilizzare AnimationDrawable come risorsa con ID. Quindi basta specificare l'ID della risorsa estraibile quando si pubblica la notifica. Non è necessario alcun altro codice per aggiornare ogni fotogramma dell'animazione. L'animazione drawable gestisce ciò che fa per te.

Ecco un link alla documentazione: http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

Così, per esempio si avrebbe bisogno di:

  1. Aggiungi un file xml (come "wheelAnim.xml") al tuo res/drawable cartella/ con il seguente contenuto:

    <!-- 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. aggiungere ogni riferimento drawable nel file XML si ju st creato per l'elenco di animazione (sia esso PNG o altro formato di immagine) nella cartella res/drawable/.

  3. Utilizzare l'ID risorsa dell'elenco di animazione (che in questo esempio è "R.drawable.wheelAnim") nel codice. Per esempio:

    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

Ho provato i drawable animati nella nuova classe NotificationBuilder come icona piccola, e ha un bell'aspetto nella barra di stato. Tuttavia, quando si abbassa il cassetto delle notifiche, l'icona NON è animata. Qualcuno ha avuto qualche esperienza con questo, e hai avuto successo rendendo l'icona animata nella vista abbattuta? – iHearGeoff

+0

Dove posso ottenere quelle immagini delle ruote? – Abhijit

+0

@iHearGeoff sei sicuro che non sia l'icona grande nella notifica quando tiri giù? –

2

Nel documentation per la creazione di notifiche della barra di stato, si dice che si può passare da un gruppo di immagini che sono definiti in un LevelListDrawable modificando la proprietà iconLevel della classe del Notification:

iconLevel campo

Questo valore indica il livello corrente di LevelListDrawable utilizzato per l'icona di notifica . È possibile animare l'icona nella barra di stato modificando questo valore su correlato con il drawable definito in LevelListDrawable. Vedere il riferimento LevelListDrawable per ulteriori informazioni.

+0

Sono consapevole di ciò, ma il mio problema è animare l'oggetto remoteView. Sto facendo è l'invio di notifiche ancora e ancora che dà l'effetto di animazione. Ma i thread post dopo 3000ms e se diminuisco il valore a sotto 2000ms. Il mio emulatore si blocca dopo alcuni aggiornamenti e mi aspetto che il dispositivo reagisca allo stesso modo. Il video mostra qualcosa di molto interessante. Animazione di un oggetto con ritardi di 100ms - 500ms. Questo mi sorprende. – JehandadK

Problemi correlati