很多用户为了手机用起来感觉上快,在开发者选项里把系统动画给关了即把那3个縮放比例改成了0,系统默认一般是1x个人建议调到0.5x就很合适了,没必要关闭否则某些动效比较多的App体验会很差。
本文的问题就是当开發者选项中的动画缩放比例被全部调成0后,App中部分设置了duration的属性动画就会失效表现为直接从开头跳到了结尾,没有动画过程
动画绘制昰否结束取决于animateBasedOnTime方法,源码也注释到如果duration为0,会忽略repeat count直接跳到结束状态这里的sDurationScale也就是开发者选项中设置的动画缩放倍数。
我们只要在動画初始化后通过反射来重置一下这个静态变量即可:
但很显然,系统会在应用进程重启后第一次调用getWindowManagerService时重设这个值所以必须得每次啟动后都设置一次(比如在主Activity的onCreate中)。