如何以编程方式获得 android 动画缩放速度?

How to get android animation scale speeds programmatically?

我想获得“Animator duration scale/speed”(来自开发者选项),以便设置正确我的应用中某些进程中的动画速度(加载和基于实时的动画)。

或者,有什么方法可以将速度覆盖到 default/1x(以防用户设置为 0.5x),从而不写太多案例? (换句话说,基于应用程序的动画速度

我应该关心这个问题吗,这是一个常见问题吗?

对于 SYSTEM 应用程序(隐藏 class) IWindowManager 有一种获取所有三种动画比例的方法:

try {
    IWindowManager iwm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
    float windowAnimationScale = iwm.getAnimationScale(0);
    float transitionAnimationScale = iwm.getAnimationScale(1);
    float animatorDurationScale = iwm.getAnimationScale(2);
} catch (RemoteException ignore) { }

对于一般应用,如果只需要动画持续时间缩放,只需调用这个静态方法:

float animatorDurationScale = ValueAnimator.getDurationScale();

答案是(就像我在 post 下 post 编辑的评论):

Finally, I found this code which helped me get users current animation speed scale.

Settings.Global.getFloat(getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f);