1

所以我需要做的是在代码中打开和关闭窗口和/或过渡动画,以获得与设置 > 显示 > 动画 > 禁用所有动画相同的效果。

我熟悉更改设备设置的方式是在 Settings.System.putInt() 方法中使用 ContentResolver,如下所示:

ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WINDOW_ANIMATION_SCALE, 0);

如文档“设置为 0 将禁用所有 .... 动画”中所述,这两种设置都适用。在使用 putInt() 方法之前和之后读取设置时,使用以下命令:

Settings.System.getString(cr, Settings.System.WINDOW_ANIMATION_SCALE);

我可以看到设置正在更改。然而,当然后做一些事情来开始一个窗口或过渡动画时,很明显可以看到设置没有任何区别并且过渡仍然发生。

我还想说,当我从“设置”屏幕中更改设置时,我可以看到重新运行我的应用程序时设置已更改。所以看起来这是正确的设置,我的应用程序没有正确更改它。

还有什么我想念的吗?

提前致谢。

4

1 回答 1

2

检查您是否设置了正确的比例。

Settings.System.TRANSITION_ANIMATION_SCALE 

将更改 Activity 转换。

然而:

Settings.System.WINDOW_ANIMATION_SCALE

将影响窗口动画,例如对话框打开。

(添加 API16)这将启用/禁用查看特定动画。

Settings.System.ANIMATOR_DURATION_SCALE

我也很确定这些是floats因为这些可以是 0.5 倍动画设置,意味着半速。我以前从未在应用程序中尝试过这些。

但有两件事浮现在脑海:

  • 是异步的ContentProvider,您需要收听设置完成设置
  • 此外,在您创建/完成和活动之前,这些可能不会起作用。意思是在活动中更改它们可能不会影响当前Activity,但我将不得不测试该理论。
于 2012-11-19T15:33:23.510 回答