安全模式或开发者模式动画程序关闭动画时长缩放,动画最好不要执行。
执行动画的结果:循环动画会闪烁,缩放动画不会执行。
解决:在安全模式或开发者模式动画程序关闭动画时长缩放时,不要执行动画。
1、PowerManager.isPowerSaveMode()
2、Settings.Global.ANIMATOR_DURATION_SCALE
boolean isPowerSaveMode() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (mPowerManager.isPowerSaveMode()) { return true; } } return isAnimatorDurationScale(); } private boolean isAnimatorDurationScale() { float animatorDurationScale = Settings.Global.getFloat(getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, 1f); if (animatorDurationScale == 0) { return true; } return false; }
这里特别注意:Settings.Global.ANIMATOR_DURATION_SCALE是没有默认值的,所以一定要写个默认值为1f
Settings.Global类
http://developer.android.com/reference/android/provider/Settings.Global.html#ANIMATOR_DURATION_SCALE
疑问点:
Launcher中有getPackageManager().isSafeMode(),注释是Return whether the device has been booted into safe mode.
返回安全模式,和PowerManager.isPowerSaveMode()不知道是不是相同的意思。安全模式是api17引入的,PowerManager.isPowerSaveMode()和我们想要的结果更接近。