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

3

我的应用程序中有一个视图需要进行动画以进行验证。

在正常情况下,动画效果很好。 除非用户的设备已禁用动画,无论是来自辅助功能选项还是开发人员设置(窗口动画比例,转换动画比例,动画器持续时间比例)。

是否有一种方法可以在设备禁用动画的情况下为视图显示动画?

谢谢

这是动画代码:

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();
    }
}

你解决了吗?在我的情况下,动画是控制进度条的一个重要特性。当禁用动画时,应用程序无法正常工作。我需要找到一种方法来覆盖辅助功能标志。 - Oleg Gryb
@OlegGryb 不好意思,我没有找到解决方案。 - Rado
1个回答

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,甚至没有警告用户在此之后一些应用程序可能无法正常运行。

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