美文网首页
Android帧动画只播放一次

Android帧动画只播放一次

作者: wenju | 来源:发表于2020-06-11 14:53 被阅读0次
//侦动画控制,只播一次
public void MyFrameAnimation(final AnimationDrawable animaition) {
    handler = new Handler();
    runnable = new Runnable() {
        @Override
        public void run() {
            //获取最后一帧,和当前帧做比较,如果相等,就结束动画,调用动画结束回调
            if (animaition.getCurrent() == animaition.getFrame(animaition.getNumberOfFrames() - 1)) {
                animaition.stop();
                handler.removeCallbacks(runnable);
            }else{
                initHandler(animaition);
            }
        }
    };
    initHandler(animaition);
}

private int maxDuration;
private void initHandler(AnimationDrawable animaition) {
    handler.postDelayed(runnable, maxDuration == 0 ? getMaxDuration(animaition) : maxDuration);
}

/**
 * 获取持续时间最长的帧的持续时间
 *
 * @return 时间  如果这一帧大于1秒,则返回 1 秒,否则返回这一帧的持续时间
 */
private int getMaxDuration(AnimationDrawable animaition) {
    for (int i = 0; i < animaition.getNumberOfFrames(); i++) {
        if (maxDuration < animaition.getDuration(i)) {
            maxDuration = animaition.getDuration(i);
        }
    }

    return Math.min(maxDuration, 1000);
}

//重置动画
private void restTab(AnimationDrawable animaition){
    if(animaition!=null){
        animaition.start();
        animaition.selectDrawable(0);
        animaition.stop();
    }
}

相关文章

网友评论

      本文标题:Android帧动画只播放一次

      本文链接:https://www.haomeiwen.com/subject/yhybtktx.html