2011-01-14 82 views
12

據我所知,我們可以使用通知管理器+遠程視圖在Android中創建通知。通知欄中的動畫自定義視圖

我正在創建一個下載MP3文件的通知。我想在它旁邊有一個動畫。到目前爲止,我從論壇上了解到,這是不可能的。

但是我看到了一個Android應用程序的視頻,該應用程序下載並在其下載時顯示動畫。 鏈接:http://www.youtube.com/watch?v=yNcs-sS2nFU&feature=related

有人可以告訴我實現它的最佳方法。

+0

視頻看起來就像是從升級Froyo或薑餅。你應該看看NotificationBuilder類,它可以讓你設置一個進度值來實現你在視頻中看到的水平條。 – iHearGeoff 2013-06-03 21:41:46

回答

24

我發現在通知中顯示自定義動畫的最佳方式是將AnimationDrawable用作具有ID的資源。然後,只需在發佈通知時指定可繪製資源ID。不需要進一步的代碼來更新動畫的每個幀。動畫可繪製爲你處理。

這裏是一個文檔的鏈接:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

因此,例如,你將需要:

  1. 添加XML文件(如 「wheelAnim.xml」)將RES /繪製/文件夾包含以下內容:

    <!-- 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. 添加在XML文件中,你舉的每個繪製參考st爲動畫列表(也就是PNG或其他圖像格式)在res/drawable/文件夾中創建。

  3. 在代碼中使用動畫列表的資源ID(在本例中爲「R.drawable.wheelAnim」)。例如:

    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

我已經嘗試在較新的NotificationBuilder類中使用動畫drawables作爲小圖標,並且它在狀態欄中看起來很棒。但是,當您拉下通知抽屜時,圖標不會生成動畫。有沒有人有過這方面的經驗,並且您是否在拉下視圖中使圖標變成動畫有任何成功? – iHearGeoff 2013-06-03 21:39:16

2

documentation創建狀態欄通知,它說,你可以循環一堆在LevelListDrawable改變了Notification類的iconLevel屬性定義的圖像:

iconLevel

該值指示用於 通知圖標的LevelListDrawable的當前級別。您可以通過將該值更改爲 與LevelListDrawable中定義的drawable關聯來在狀態欄中爲該圖標設置動畫。有關更多信息,請參閱LevelListDrawable 參考。

+0

我意識到這一點,但我的問題是動畫remoteView對象。我正在做的是一次又一次地發送通知,這給動畫效果。但是,3000ms後的帖子帖子,如果我減少到2000ms以下的值。我的模擬器在幾次更新後掛起,我希望設備以相同的方式作出反應。該視頻顯示了一些非常有趣的事物,它以100ms - 500ms的延遲動畫化了一個對象。這讓我感到驚訝。 – JehandadK 2011-01-18 09:57:25