前言

通过合理的设置安卓中过渡动画的缩放速度,可以让安卓手机中窗口的切换更自然、更流畅,操作上感觉更加的丝滑。安卓手机上一般有窗口动画缩放(window_animation_scale)、过渡动画缩放(transition_animation_scale)和Animator时长缩放(animator_duration_scale)可做设置。

但是大多安卓系统对于动画缩放速度的设置大多只有几个档位,如0.5x、0.75x、1x、1.5x、2x、5x、10x,无法随心所欲的调节,而且档位不多,无论怎么做组合,要不就是感觉动画快了,要不就是慢了,亦或是感觉生硬。本文带来的就是打破这个局限,随性DIY,找到那个最适合你的。

开始

首先本文是通过adb的方式改变安卓手机系统的动画缩放速度,而且脚本中adb的连接方式为USB连接。

步骤:

  1. 手机USB连接电脑
  2. 打开你安卓手机的开发者选项(如已开启进入下一步;如何开启,可以百度搜索自己手机怎么开启开发者选项)
  3. 进入开发者选择,打开USB调试,允许使用USB调试,手机可能会提示授权电脑允许USB调试,请点确认
  4. 下载文件SetAnimation.zip,解压,双击SetAnimation文件夹下的SetAnimation.bat脚本运行
  5. 脚本会连接手机,手机可能会提示授权电脑允许USB调试,请点确认
  6. 按照脚本的菜单设置即可,一般实测设置1.2-1.4会感觉比较丝滑,脚本限制了动画速度只能在0-10

检查是否设置成功:

  • 脚本在菜单页面会获取并显示你手机目前的缩放速度
  • 设置后检查开发者选项里动画缩放,原来为1x,设置为1.25x,若从1x变为1.5x则设置成功
  • 可以设置一个大一点的值,如5,可以明显感觉到动画过渡得很慢。

注意:设置完把USB调试给关了!!!

脚本界面:

Android 动态设置高度动画 安卓动画缩放最佳设置_安卓

附录

代码附录,Windows的bat脚本,依赖于adb,照猫画虎写的,没啥技术含量,方便大家设置安卓的动画缩放速度。如果你有adb环境,可以保存成bat文件在Windows直接运行。

@REM @Author: Myles
@REM @Date:   2020-03-04 23:20:52

@echo off
title 安卓动画缩放设置


:checkConnected
echo.&echo 正在连接安卓设备...
for /f "delims=" %%i in ('adb devices') do (set status=%%i)
echo %status%|findstr "attached unauthorized" && (goto failToConnect) || (goto menu)

 
:failToConnect
cls
echo 连接手机失败,请检查USB调试是否打开和允许!
echo.&echo 按任意键重试...
set /p pass=
goto checkConnected

:menu
cls
echo.&echo   提示:
echo.&echo   建议设置在1.2x-1.4x之间,较为丝滑,多设置试试效果
echo.&echo   设置后检查开发者选项里动画缩放,原来为1x,设置为1.25x,若从1x变为1.5x则设置成功
echo.
echo.&echo   您手机目前的动画缩放值分别为:
for /f "delims=" %%i in ('adb shell settings get global window_animation_scale') do (set cur_was=%%i)
for /f "delims=" %%i in ('adb shell settings get global transition_animation_scale') do (set cur_tas=%%i)
for /f "delims=" %%i in ('adb shell settings get global animator_duration_scale') do ( set cur_ads=%%i)
echo.&echo   窗口动画缩放:%cur_was%x   过渡动画缩放:%cur_tas%x   Animator时长缩放:%cur_ads%x
echo.
echo.&echo   请选择您要执行的操作:
echo.&echo  【1】默认设置(全部设为1.25x)
echo.&echo  【2】一次设置(全部设为一个值)
echo.&echo  【3】逐项设置(一项项设置)
echo.&echo  【4】退出
echo.

set /p sel=请输入数字后回车:
If "%sel%"=="1" (goto setAnimation)
If "%sel%"=="2" (goto setAnimationAtOnce)
If "%sel%"=="3" (goto setAnimationOneByOne)
If "%sel%"=="4" (goto exit)
echo.&echo 输入无效,请重新输入!
pause
goto menu


:setAnimation
:: 窗口动画缩放
adb shell settings put global window_animation_scale 1.25
:: 过渡动画缩放
adb shell settings put global transition_animation_scale 1.25
:: Animator时长缩放
adb shell settings put global animator_duration_scale 1.25

echo.&echo 完成,请检查过渡动画是否设置成功!
echo.&pause
goto menu


:setAnimationAtOnce
echo.
set /p val=请输入0-10的缩放值:
call:verifyInput %val%, setAnimationAtOnce
:: 窗口动画缩放
adb shell settings put global window_animation_scale %val%
:: 过渡动画缩放
adb shell settings put global transition_animation_scale %val%
:: Animator时长缩放
adb shell settings put global animator_duration_scale %val%

echo.&echo 完成,请检查过渡动画是否设置成功!
echo.&pause
goto menu


:setAnimationOneByOne
echo.

:: 窗口动画缩放
:was
echo.&set /p was=请输入0-10的窗口动画缩放值(window_animation_scale):
call:verifyInput %was%, was
adb shell settings put global window_animation_scale %was%

:: 过渡动画缩放
:tas
echo.&set /p tas=请输入0-10的过渡动画缩放值(transition_animation_scale):
call:verifyInput %tas%, tas
adb shell settings put global transition_animation_scale %tas%

:: Animator时长缩放
:ads
echo.&set /p ads=请输入0-10的过渡动画缩放值(animator_duration_scale):
call:verifyInput %ads%, ads
adb shell settings put global animator_duration_scale %ads%

echo.&echo 完成,请检查过渡动画是否设置成功!
echo.&pause
goto menu


@REM 检验输入值(val, goto)
:verifyInput
if %~1 lss 0 (
	echo.&echo 非法输入,请输入0-10的缩放值
	goto %~2
)
if %~1 gtr 10 (
	echo.&echo 非法输入,请输入0-10的缩放值
	goto %~2
)
goto:eof

:: 退出
:exit
taskkill /f /im adb.exe
exit