我想获取 "动画器持续时间比例/速度" (从开发人员选项中),以便在我的应用程序中的某些过程中设置正确的动画速度 (载入和实时基础动画)。
或者,是否有任何方法可以覆盖速度为默认/1x (如果用户设置为0.5x),以免编写多种情况? (换句话说是基于应用程序的动画速度)
我应该关心这个问题吗?这是一个常见的问题吗?
我想获取 "动画器持续时间比例/速度" (从开发人员选项中),以便在我的应用程序中的某些过程中设置正确的动画速度 (载入和实时基础动画)。
或者,是否有任何方法可以覆盖速度为默认/1x (如果用户设置为0.5x),以免编写多种情况? (换句话说是基于应用程序的动画速度)
我应该关心这个问题吗?这是一个常见的问题吗?
答案就像我在帖子下发布的评论:
最终,我找到了这段代码,帮助我获取用户当前的动画速度比例。
Settings.Global.getFloat(getContentResolver(),
Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f);
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();
Settings.Global.getFloat(getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f);
- Aaron