对象动画师未在电池节电模式下工作post JellyBean(>;Android 5.x)

对象动画师未在电池节电模式下工作post JellyBean(>;Android 5.x),android,animation,android-5.0-lollipop,objectanimator,battery-saver,Android,Animation,Android 5.0 Lollipop,Objectanimator,Battery Saver,我的应用程序大量使用。但我最近注意到,使用ObjectAnimator的动画在电池节电模式打开时无法工作,有时甚至会崩溃。由于应用程序界面的平滑度在很大程度上依赖于动画,所以我不能忽略其中任何一个。请提供解决方法,以便即使在电池节电模式下也能使用这些动画。 所有的动画师都提出了这个问题吗?? 提前感谢。事实上,当电池节电模式打开时,Android会禁用动画,这意味着您设置为animator的任何持续时间都将更改为0。Animator将获得自持续时间为0以来应用于目标视图的最后一个值。 例如: V

我的应用程序大量使用。但我最近注意到,使用ObjectAnimator的动画在电池节电模式打开时无法工作,有时甚至会崩溃。由于应用程序界面的平滑度在很大程度上依赖于动画,所以我不能忽略其中任何一个。请提供解决方法,以便即使在电池节电模式下也能使用这些动画。 所有的动画师都提出了这个问题吗??
提前感谢。

事实上,当电池节电模式打开时,Android会禁用动画,这意味着您设置为animator的任何持续时间都将更改为0。Animator将获得自持续时间为0以来应用于目标视图的最后一个值。 例如:

View container = inflater.inflate(R.layout.container);
View view = inflater.inflate(R.layout.view, null);
container.addView(view);
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", 0, 100);
animator.setDuration(200);
animator.start();
动画完成时,视图的位置将设置为(0,100)。 在电池节电模式下,当animator设置视图的“y”属性时,animator的持续时间将更改为0,并且视图尚未布局,因此动画似乎失败

决议:

View container = inflater.inflate(R.layout.container);
View view = inflater.inflate(R.layout.view, null);
new Handler().post(new Runnable() {
    @Override
    public void run() {
        ObjectAnimator animator = ObjectAnimator.ofFloat(view, "y", 0, 100);
        animator.setDuration(200);
        animator.start();
    }
});

在animator执行之前,我们应该确保视图的布局完成。

不仅是“电池节省模式”,用户还可以完全关闭动画,并且
ValueAnimator
/
ObjectAnimator
中的任何一个都不会关闭work@pskink.. 除非用户明确关闭它们,否则我应该如何使用它们?您不应该在animator的侦听器中调用任何业务逻辑(除了开始值和结束值,因为它们是由animator的侦听器调用的)