现在,我通过检查进度何时达到100来检测ValueAnimator的结尾。

//Setup the animation
ValueAnimator anim = ValueAnimator.ofInt(progress, seekBar.getMax());

//Set the duration

anim.setDuration(Utility.setAnimationDuration(progress));

anim.addUpdateListener(new AnimatorUpdateListener()
{

    @Override
    public void onAnimationUpdate(ValueAnimator animation)
    {
        int animProgress = (Integer) animation.getAnimatedValue();

        if ( animProgress == 100)
        {
            //Done
        }

        else
        {
            seekBar.setProgress(animProgress);
        }
    }
});

这是正确的方法吗?我通读了文档,并在完成时找不到任何类型的监听器或回调。我尝试使用isRunning(),但效果不佳。

最佳答案

您可以执行以下操作:

ValueAnimator anim = ValueAnimator.ofInt(progress, seekBar.getMax());
anim.setDuration(Utility.setAnimationDuration(progress));
anim.addUpdateListener(new AnimatorUpdateListener()
{
    @Override
    public void onAnimationUpdate(ValueAnimator animation)
    {
        int animProgress = (Integer) animation.getAnimatedValue();
        seekBar.setProgress(animProgress);
    }
});
anim.addListener(new AnimatorListenerAdapter()
{
    @Override
    public void onAnimationEnd(Animator animation)
    {
        // done
    }
});
anim.start();

关于android - 检测ValueAnimator完成的时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20233558/

10-11 20:09