【问题标题】:How to check status of Remove Animations accessibility setting programmatically如何以编程方式检查删除动画辅助功能设置的状态
【发布时间】:2021-06-27 16:24:59
【问题描述】:

我正在尝试检查 Remove animations 可访问性设置的状态,以便在我的应用程序上启用/禁用某些 UI 和 GIF 动画,但我在 AccessibilityManager 中没有看到任何公开的方法以便访问这个值:

有什么简单的方法可以访问这个值吗?即使有反射

【问题讨论】:

    标签: android accessibility settings


    【解决方案1】:

    我已经检查过,当这个值被切换时,有 3 个值被修改:

    //global settings
    animator_duration_scale=0
    transition_animation_scale=0
    window_animation_scale=0
    

    您可以通过检查以编程方式确定这些:

        if (Settings.Global.getFloat(context.contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE) == 0f)
             // Animations Off behaviour
        else
             // Animations On behaviour
    

    我做了一个检查所有三个都不为 0 的方法(因为所有 3 都会对齐,我认为这些有时可以在其他地方切换):

        fun animationsEnabled(): Boolean =
            !(Settings.Global.getFloat(contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE) == 0f
                    && Settings.Global.getFloat(contentResolver, Settings.Global.TRANSITION_ANIMATION_SCALE) == 0f
                    && Settings.Global.getFloat(contentResolver, Settings.Global.WINDOW_ANIMATION_SCALE) == 0f)
    

    请记住,这些是缩放数字,因此它们不仅仅是 0 和 1!这就是为什么我们需要获取它们的浮点值以及我们检查 0 的原因。然后我们需要记住,如果动画关闭,它们将全部设置为 0。

    来源:

    1. https://developer.android.com/reference/android/provider/Settings.Global#ANIMATOR_DURATION_SCALE
    2. https://developer.android.com/reference/android/provider/Settings.Global#TRANSITION_ANIMATION_SCALE
    3. https://developer.android.com/reference/android/provider/Settings.Global#WINDOW_ANIMATION_SCALE

    【讨论】:

    • 感谢您的回复,我最终做到了,而且效果很好!
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 2016-11-16
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2016-12-14
    • 1970-01-01
    相关资源
    最近更新 更多