私のアプリには、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
とは両方ともplay_pause_play
PNGファイルです。このアニメーションは、 :@drawable/play_pause_ready
内で(として)使用されます。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>
そして、level-list
順番にで描画可能な複合として使用され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ミリ秒)表示されますが、2番目のフレームは非常に短い期間(20ミリ秒以下)で表示されます。
これはフローズンヨーグルトのバグに非常によく似ていますが、インターネットでは何も見つかりません。誰かが以前にこの問題を見たことがありますか?もしそうなら、回避策はありますか?