You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Java如何通过代码修改设备动画设置(含移除动画)

Android 10 下通过Java编程切换「Remove Animations(移除动画)」设置实现方案

你提到的无障碍菜单下的移除动画开关,是Android 10(API 29)新增的系统全局设置项,可通过Settings.Global提供的接口直接读写,具体实现逻辑如下:

前置权限要求

修改该设置需要持有android.permission.WRITE_SECURE_SETTINGS权限,该权限属于系统管控的特权权限:

  • 预装到系统分区的特权应用可直接在Manifest中声明使用
  • 普通调试应用可通过adb命令临时授权,命令如下:
    adb shell pm grant 你的应用包名 android.permission.WRITE_SECURE_SETTINGS
  • 面向普通用户分发的第三方上架应用无法获取该权限,不要在生产环境依赖这个能力。

核心实现代码

1. 检查当前开关状态

boolean isRemoveAnimationsOn = false;
// 该设置仅Android 10及以上版本存在,必须加版本判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    isRemoveAnimationsOn = Settings.Global.getInt(
            getContentResolver(),
            Settings.Global.DISABLE_ANIMATIONS,
            0 // 系统默认状态为关闭,对应值0
    ) == 1;
}

2. 切换开关状态

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    // 要切换到的目标状态:1代表开启移除动画,0代表关闭
    int targetValue = isRemoveAnimationsOn ? 0 : 1;
    Settings.Global.putInt(
            getContentResolver(),
            Settings.Global.DISABLE_ANIMATIONS,
            targetValue
    );
}

注意事项

  • 开启该开关后,系统会自动将窗口动画缩放、过渡动画缩放、动画程序时长缩放三个开发者选项里的动画参数强制置为0,不需要你手动修改这三个参数;关闭开关后系统会自动恢复用户之前设置的动画缩放比例。
  • 没有对应权限时调用写入接口会直接抛出SecurityException,建议在调用前增加权限校验逻辑,避免崩溃。
  • 低于Android 10的系统没有这个全局开关,要实现移除动画效果只能手动修改三个动画缩放的全局设置值。

功能对应位置参考:
Remove Animations设置项截图

内容的提问来源于stack exchange,提问作者Sambhav Khandelwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:12:40