有没有一种方法可以覆盖Android视图中的动画辅助功能设置

时间:2019-06-11 16:05:52

标签: android animation

我的应用程序中有一个视图,出于验证原因,该视图需要动画。

通常情况下,动画效果良好。 除非当用户的设备从“辅助功能选项”或“开发人员”设置(“窗口动画比例”,“过渡动画比例”,“动画师持续时间”比例)禁用了动画。

即使禁用了设备的动画,是否可以显示视图的动画?

谢谢

这是动画代码:

private ObjectAnimator translateAnimator;
private View animatedView;
...
private void startAnimation() {
    if (translateAnimator == null) {
        translateAnimator = ObjectAnimator.ofFloat(animatedView, "translationX", 0f, 300f);
        translateAnimator.setAutoCancel(true);
        translateAnimator.setDuration(2000);
        translateAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
        translateAnimator.setRepeatCount(ValueAnimator.INFINITE);
        translateAnimator.setRepeatMode(ValueAnimator.REVERSE);

        translateAnimator.start();
    } else {
        translateAnimator.resume();
    }
}

1 个答案:

答案 0 :(得分:1)

我仍然不知道如何覆盖用户的动画设置,但至少我找到了一种方法来检查用户是否禁用了动画并警告他们我的应用程序不会按预期工作。

        try {
            val anim = Settings.Global.getFloat(root.contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f)
            Log.d(TAG, "ANIM = $anim")

            if (-Float.MIN_VALUE <= anim && anim <= Float.MIN_VALUE) {
                // Below is my proprietary showAlret function. You'll need to use yours
                App.app?.showAlert("Enable Animation", R.string.enableAnimation, root, true)
            }

        }
        catch (e: Exception) {
            Log.d(TAG, "ANIM: ${e.message}")
        }

总的来说,这只是 Android 的另一个缺点,表明工程师在实现新功能时并没有考虑太多:一方面他们提供了开发人员依赖的 API,另一方面他们允许用户完全禁用它API 甚至没有警告用户某些应用程序在此之后可能无法正常运行。