首页 > 解决方案 > Android Get Default Animator Duration Scale(开发者选项)

问题描述

所以在我的应用程序中,我真的需要将动画比例设置为 1 才能正常工作,并且我尝试使用此调用来获取定义的值,以便我可以警告用户:

val durationScale = Settings.Global.getFloat(contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, defaultValue = 1f)

奇怪的是,在我的一台设备(Lenovo Tab M10)上,所有持续时间刻度都设置为 0.5 作为原始值(这正是我需要它工作的原因,有些设备就像出厂时那样),然后这个函数没有返回正确的值ANIMATOR_DURATION_SCALE。它总是返回发送的默认值,在这种情况下为 1f,即使它设置为 0.5f。我注意到了什么:

1- 在手动将 0.5f 从开发人员的选项更改为任何其他值(甚至回到 0.5f)后,函数开始返回正确的值。

2-TRANSITION_ANIMATION_SCALE并且WINDOW_ANIMATION_SCALE也设置为 0.5f 作为此设备上的原始值,即使不更改它们,上面的函数也会正确返回它们,除了TRANSITION_ANIMATION_SCALE,这是我需要的。

这可能是仅在此设备上发生的问题吗?很难测试,因为它是我拥有的唯一将原始值设置为 0.5f 的设备,但令人非常沮丧的是,我没有得到应有的原始值。

标签: androidandroid-animation

解决方案


我同意,没有得到正确的值是令人沮丧的。我也有类似的情况。我不知道它是否会有所帮助,但我可以分享我的经验。

在某些设备中,动画持续时间比例设置为 1x (1.0f),代码中的默认值设置为 0.0f,如下所示

val durationScale = Settings.Global.getFloat(
   contentResolver, 
   Settings.Global.ANIMATOR_DURATION_SCALE, 
   defaultValue = 0.0f
)

但是每当我检索该值时,它总是 0.0,即使它应该返回 1.0。就像您一样,在手动将 1x 从开发人员的选项更改为任何其他值(甚至回到 1x)后,该函数返回正确的值。

此外,这种情况发生在许多设备中,而不仅仅是一种。例如:像素、三星等。


推荐阅读