AnimationDrawable не может очистить кадры - PullRequest
2 голосов
/ 06 декабря 2011

Я пытаюсь проблематично добавить кадры и длительность в AnimationDrawable, но не могу получить желаемый результат.Я могу добавить кадры, но последующие вызовы не очищают старые кадры.Есть ли способ сбросить AnimationDrawable?

Вот выдержка из моего кода:

public void animate() {

    if (a != null && a.isRunning()) {
        a.stop();   
    }

    //iv.setImageDrawable(null);
    //iv.setBackgroundDrawable(null);
    iv.setBackgroundResource(R.drawable.blank_animation);
    a = (AnimationDrawable) iv.getBackground();

    a.addFrame(res.getDrawable(R.drawable.blank), 1);
    for (int i=0;i<Frames.size();i++) {

        a.addFrame(res.getDrawable(Frames.get(i)), AnimationSpeed);

    }
    a.addFrame(res.getDrawable(R.drawable.blank), 1);

    a.setOneShot(true);
    a.start();

}

Я безуспешно пытался выполнить следующие действия, чтобы очистить либо ImageView и / или AnimationDrawable.

iv.setImageDrawable(null);
iv.setBackgroundDrawable(null);
a = new AnimationDrawable();
iv.clearAnimation();

Я также пытался обнулить ImageView и воссоздать его, но это не привело к сбросу кадров.

Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 06 декабря 2011

Попробуй вот так

a = new AnimationDrawable();
a.addFrame(res.getDrawable(R.drawable.blank), 1);
for (int i=0;i<Frames.size();i++) {
    a.addFrame(res.getDrawable(Frames.get(i)), AnimationSpeed);
}
a.addFrame(res.getDrawable(R.drawable.blank), 1);
iv.setBackgroundDrawable(a);

a.setOneShot(true);
a.start();
...