通知栏自定义视图中的动画

时间:2011-01-14 04:44:00

标签: android animation widget android-layout push-notification

据我所知,我们可以使用Notification Manager +远程视图在Android中创建通知。

我正在创建下载Mp3文件的通知。而且我想要它旁边的动画。到目前为止,我从论坛上了解到这是不可能的。

然而,我看到一个Android应用程序的视频,下载并在下载时显示旁边的动画。 链接:http://www.youtube.com/watch?v=yNcs-sS2nFU&feature=related

有人可以告诉我实现它的最佳方法。

2 个答案:

答案 0 :(得分:25)

我发现在通知中显示自定义动画的最佳方法是使用AnimationDrawable作为具有ID的资源。然后,只需在发布通知时指定可绘制资源ID。无需更多代码即可更新动画的每个帧。动画drawable为您处理。

以下是文档的链接:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

例如,你需要:

  1. 将xml文件(例如“wheelAnim.xml”)添加到 res / drawable / 文件夹中,其中包含以下内容:

    <!-- 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. res/drawable/文件夹中为动画列表(即PNG或其他图像格式)创建的xml文件中添加每个可绘制参考。

  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);
    

答案 1 :(得分:2)

在用于创建状态栏通知的documentation中,它表示您可以通过更改{iconLevel的{​​{1}}属性来循环浏览LevelListDrawable中定义的一组图像。 3}} class:

  

iconLevel 字段

     

此值指示用于的LevelListDrawable的当前级别   通知图标。您可以通过将此值更改为状态栏中的图标来设置动画   与LevelListDrawable中定义的drawable相关联。请参阅LevelListDrawable   参考了解更多信息。