Android 通知栏自定义视图中的动画
据我所知,我们可以使用通知管理器+远程视图在Android中创建通知 我正在创建下载Mp3文件的通知。我想在它旁边放一个动画。到目前为止,我从论坛上了解到这是不可能的 然而,我看到了一个android应用程序的视频,它在下载时下载并在旁边显示动画。 链接: 有人能告诉我实现它的最佳方法吗 在用于创建状态栏通知的中,它说您可以通过更改类的Android 通知栏自定义视图中的动画,android,animation,widget,android-layout,push-notification,Android,Animation,Widget,Android Layout,Push Notification,据我所知,我们可以使用通知管理器+远程视图在Android中创建通知 我正在创建下载Mp3文件的通知。我想在它旁边放一个动画。到目前为止,我从论坛上了解到这是不可能的 然而,我看到了一个android应用程序的视频,它在下载时下载并在旁边显示动画。 链接: 有人能告诉我实现它的最佳方法吗 在用于创建状态栏通知的中,它说您可以通过更改类的iconLevel属性,循环浏览在中定义的一组图像: iconLevel字段 此值表示用于该应用程序的LevelListDrawable的当前级别 通知图标。通过
iconLevel
属性,循环浏览在中定义的一组图像:
iconLevel字段
此值表示用于该应用程序的LevelListDrawable的当前级别
通知图标。通过将此值更改为,可以在状态栏中设置图标动画
与LevelListDrawable中定义的drawable关联。请参见LevelListDrawable
有关更多信息,请参阅
我发现在通知中显示自定义动画的最佳方法是使用AnimationDrawable作为具有ID的资源。然后在发布通知时只需指定可绘制的资源ID。不需要进一步的代码来更新动画的每一帧。可绘制的动画将为您处理该问题 以下是指向文档的链接: 例如,您需要:
<!-- 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>
我知道这一点,但我的问题是设置remoteView对象的动画。我正在做的是一次又一次地发送通知,从而产生动画效果。但是线程在3000ms后发布,如果我将该值减小到2000ms以下。我的模拟器在几次更新后挂起,我希望设备也会以同样的方式做出反应。视频显示了一些非常有趣的东西,它以100毫秒-500毫秒的延迟为对象设置动画。这让我感到惊讶。我在新的NotificationBuilder类中尝试了动画绘图作为小图标,它在状态栏中看起来很棒。但是,当您下拉通知抽屉时,图标不会设置动画。有人对此有过经验吗?你是否成功地在下拉视图中将图标设置为动画?我在哪里可以获得这些车轮图像部分?@iHearGeoff你确定当你下拉时,它不是通知中的大图标吗?视频看起来像是来自Froyo或Gingerbread。您应该查看NotificationBuilder类,该类允许您设置进度值以实现视频中显示的水平条。
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);