0

私のアプリには、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_playPNGファイルです。このアニメーションは、 :@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ミリ秒以下)で表示されます。

これはフローズンヨーグルトのバグに非常によく似ていますが、インターネットでは何も見つかりません。誰かが以前にこの問題を見たことがありますか?もしそうなら、回避策はありますか?

4

1 に答える 1

1

animation-list私はAndroid2.2、3.2で同様の問題を抱えていまし
AnimationDrawable.setCallback()

void startAnimation(ImageView iv) {
    final AnimationDrawable ad = (AnimationDrawable) iv.getDrawable();
    ad.setCallback(iv);
    ad.setVisible(true, true);
    iv.post(new Runnable() {
        @Override public void run() {
            ad.start();
        }
    });
}
于 2013-10-16T09:13:51.597 に答える