【问题标题】:AnimationDrawable unable to clear framesAnimationDrawable 无法清除帧
【发布时间】:2011-12-06 16:19:03
【问题描述】:

我正在尝试将帧和持续时间添加到 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 设为 null 并重新创建它,但并没有重置框架。

任何帮助将不胜感激。

【问题讨论】:

    标签: java android imageview android-animation


    【解决方案1】:

    这样试试

    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();
    

    【讨论】:

    • 感谢@jobesu14 成功了!唯一的问题是 a.setBackgroundDrawable(anim);应该是 iv.setBackgroundDrawable(a);。 ImageView 必须设置为 AnimationDrawable。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2020-01-08
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 2016-05-03
    相关资源
    最近更新 更多