Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 在ViewPropertyAnimator中指定重复计数/模式?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在使用ViewPropertyAnimator时指定重复计数/模式?

解决方法

不幸的是,ViewPropertyAnimator没有任何方法来指定它执行的动画的重复计数.正如ViewPropertyAnimator中的startAnimation()方法javadoc所述:

不幸的是,它使用的动画师是私有的,我们不可能以任何其他方式操纵它的状态,而不是由ViewPropertyAnimator的公共方法提供.

重复动画

为ViewPropertyAnimator指定anAnimatorListener,它将在每次迭代后重新启动动画:

viewPropertyAnimator.setListener(new Animator.AnimatorListener() {

    ...

    @Override
    public void onAnimationEnd(Animator animation) {
        viewPropertyAnimator.start();
    }

    ...

});
viewPropertyAnimator.start();

如果要指定确切的执行次数,请以这种方式引入变量:

int[] repeatCount = {8}; //your repeat count goes here

viewPropertyAnimator.setListener(new Animator.AnimatorListener() {

    ...

    @Override
    public void onAnimationEnd(Animator animation) {
        if(repeatCount-- > 0)
            viewPropertyAnimator.start();
    }

    ...

});
viewPropertyAnimator.start();

编辑

需要注意的是,ViewPropertyAnimator动画的值(起始值和结束值)存储在ViewPropertyAnimator的实例中,因此在每次动画后都不会刷新.因此,如果您希望在每次迭代后为视图的某些属性设置增量动画,请确保在每次启动之前创建动画师的新实例.像这样:

public void animateEndlessly(final View v) {
        ViewPropertyAnimator viewPropertyAnimator = v.animate().scaleX(1.5f).scaleY(1.5f).setDuration(300);
        viewPropertyAnimator.setListener(new Animator.AnimatorListener() {

            ...

            @Override
            public void onAnimationEnd(Animator animation) {
                animateEndlessly(v);
            }

            ...

        });
        viewPropertyAnimator.start();
    }

大佬总结

以上是大佬教程为你收集整理的android – 在ViewPropertyAnimator中指定重复计数/模式?全部内容,希望文章能够帮你解决android – 在ViewPropertyAnimator中指定重复计数/模式?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。