如何通过编程获取Android动画缩放速度?

11

我想获取 "动画器持续时间比例/速度" (从开发人员选项中),以便在我的应用程序中的某些过程中设置正确的动画速度 (载入和实时基础动画)。

或者,是否有任何方法可以覆盖速度为默认/1x (如果用户设置为0.5x),以免编写多种情况? (换句话说是基于应用程序的动画速度)

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


动画有一定的持续时间,根据需要进行相应的更改。 - Luca Nicoletti
@LucaNicoletti 这就像是一个问答应用程序,用户有10秒钟来回答问题,但如果他的动画比例设置为0.5倍,则动画将在5秒钟内结束(默认情况下,1倍速度运行良好)。因此,动画持续时间对我处理这种情况没有帮助。 - Aaron
4
最终我找到了这段代码,它帮助我获取了用户当前的动画速度比例。Settings.Global.getFloat(getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f); - Aaron
1
不妨自己回答! - Shujito
2个回答

16

答案就像我在帖子下发布的评论:

最终,我找到了这段代码,帮助我获取用户当前的动画速度比例。

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

有没有可能禁用特定的视图/动画/Drawable,以便动画始终按照“1.0f”的持续时间比例播放? - android developer

-2
对于系统应用程序(隐藏类)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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接