在我的应用程序中,我使用了一个闪烁的播放暂停按钮animation-list
,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/play_pause" android:duration="750" />
<item android:drawable="@drawable/play_pause_play" android:duration="750" />
</animation-list>
两者都是play_pause
PNGplay_pause_play
文件。此动画@drawable/play_pause_ready
在 a 中使用(as )level-list
:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:maxLevel="1" android:drawable="@drawable/play_pause_pause" />
<item android:maxLevel="2" android:drawable="@drawable/play_pause_play" />
<item android:maxLevel="3" android:drawable="@drawable/play_pause" />
<item android:maxLevel="10" android:drawable="@drawable/play_pause_ready" />
</level-list>
而 thelevel-list
又被用作 a 中的复合可绘制对象TextView
。如果它是相关的,操作它的代码如下所示:
private void updatePlayPauseButton(...) {
if (getView() != null) {
LevelListDrawable ld = (LevelListDrawable) timeField.getCompoundDrawables()[2];
ld.setLevel(...);
Drawable child = ld.getCurrent();
if (child instanceof AnimationDrawable) {
AnimationDrawable ad = (AnimationDrawable) child;
ad.start();
}
}
}
并从 onStart() 和其他地方调用(在响应按钮按下时调用行为是相同的)。
在 ICS 和 Jellybean 上,一切正常,但在运行 Froyo 的 HTC Desire 上,动画显示错误。动画的第一帧显示大致正确的持续时间(750 毫秒),但第二帧显示的时间很短,不超过 20 毫秒。
这看起来很像 Froyo 中的一个错误,但我在 Internet 上找不到任何关于它的信息。以前有没有人遇到过这个问题,如果有,是否有解决方法?