据我所知,我们可以使用Notification Manager +远程视图在Android中创建通知。
我正在创建下载Mp3文件的通知。而且我想要它旁边的动画。到目前为止,我从论坛上了解到这是不可能的。
然而,我看到一个Android应用程序的视频,下载并在下载时显示旁边的动画。 链接:http://www.youtube.com/watch?v=yNcs-sS2nFU&feature=related
有人可以告诉我实现它的最佳方法。
答案 0 :(得分:25)
我发现在通知中显示自定义动画的最佳方法是使用AnimationDrawable作为具有ID的资源。然后,只需在发布通知时指定可绘制资源ID。无需更多代码即可更新动画的每个帧。动画drawable为您处理。
以下是文档的链接:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html
例如,你需要:
将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>
在res/drawable/
文件夹中为动画列表(即PNG或其他图像格式)创建的xml文件中添加每个可绘制参考。
在代码中使用动画列表的资源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 参考了解更多信息。