如何使用 AnimationDrawable 暂停帧动画? [关闭]

Posted

技术标签:

【中文标题】如何使用 AnimationDrawable 暂停帧动画? [关闭]【英文标题】:How do I pause frame animation using AnimationDrawable? [closed] 【发布时间】:2011-02-21 07:28:17 【问题描述】:

如何使用 AnimationDrawable 暂停帧动画?

【问题讨论】:

【参考方案1】:

来自 API:

动画没有暂停方法。

http://www.androidjavadoc.com/1.0_r1/android/view/animation/package-summary.html

【讨论】:

感谢您的回复。是的,我知道没有暂停方法,而是我实现了一个自定义类,它实现了 Runnable 并使用 postDelayed、removeCallbacks 方法来完成任务。我不确定这是否是正确的做法。【参考方案2】:

我意识到这个帖子已经很老了,但是由于这是我在搜索暂停动画的方法时在 Google 上的第一个答案,所以我将在此处发布解决方案以供其他人查看。 您需要做的是子类化您想要使用的动画类型,然后添加暂停和恢复动画的方法。以下是 AlphaAnimation 的示例:

public class PausableAlphaAnimation extends AlphaAnimation 

    private long mElapsedAtPause=0;
    private boolean mPaused=false;

    public PausableAlphaAnimation(float fromAlpha, float toAlpha) 
        super(fromAlpha, toAlpha);
    

    @Override
    public boolean getTransformation(long currentTime, Transformation outTransformation)  
        if(mPaused && mElapsedAtPause==0) 
            mElapsedAtPause=currentTime-getStartTime();
        
        if(mPaused)
            setStartTime(currentTime-mElapsedAtPause);
        return super.getTransformation(currentTime, outTransformation);
    

    public void pause() 
        mElapsedAtPause=0;
        mPaused=true;
    

    public void resume() 
        mPaused=false;
    

这将在动画暂停时不断增加您的开始时间,从而有效地阻止它完成并保持它在您暂停时的状态。

希望对某人有所帮助。

【讨论】:

这非常有效。谢谢。 感谢您与我们分享这对我来说非常有帮助 +1! @Deepak 可以用于帧动画 @Johan 它可以用于帧动画

以上是关于如何使用 AnimationDrawable 暂停帧动画? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Android AnimationDrawable

Android_AnimationDrawable介绍及使用

AnimationDrawable 自动启动

TextView上的AnimationDrawable?

Android之AnimationDrawable初识

在 ListView 项目中启动 AnimationDrawable。啥时候附上物品?