可观察到的延迟会忽略设备动画设置

时间:2018-06-27 15:05:47

标签: android rx-java android-animation observable delay

任何Android手机都具有开发者选项来修改动画速度。窗口动画比例,过渡动画比例和Animator持续时间比例是我正在谈论的三个设置。

以下代码段将忽略您的设置:

.delay(200, TimeUnit.MILLISECONDS).subscribe

该代码将忽略动画设置,因为“延迟”并不是固有地与动画相关联的。就我的代码而言,就是这样。

如何在应用中获取此代码以根据设备的开发人员选项动画缩放设置进行缩放?

2 个答案:

答案 0 :(得分:1)

不要使用毫秒级延迟将代码与动画绑定。 尽管这是一个简单的解决方案,但是动画延迟或持续时间可能与您为其设置的值不同。相反,您可以使用动画侦听器回调。

答案 1 :(得分:0)

所以我发现了如何获得乘法器的系统设置...

.delay(getScaledDelayDuration(200), TimeUnit.MILLISECONDS).subscribe

private long getScaledDelayDuration(long delay) {
    float multiplier =  Settings.System.getFloat(
            this.getContext().getContentResolver(),
            Settings.System.TRANSITION_ANIMATION_SCALE, 1);
    return (long) (multiplier * delay);
}

...但是,这不仅不能解决我遇到的根本问题,而且根本不是解决此问题的好方法。我想我现在应该删除问题。