解决安卓手机动画效果无效问题

 系统版本:andfroid版本9、手机型号:MHA-AL00、设备名称:HUAWEI Mata 9.

测试代码:

 mFristBtn.setOnClickListener {
           val valueAnimator = ValueAnimator.ofInt(0,1000)
            valueAnimator.duration = 1000
            valueAnimator.addUpdateListener { animation ->
                val animatedValue = animation?.animatedValue
                Log.e(">>>>>>>>>>>>>", "animatedValue:$animatedValue")
            }
            valueAnimator.start()
        }

日志输出:

E/>>>>>>>>>>>>>: animatedValue:0
E/>>>>>>>>>>>>>: animatedValue:1000

可以看到,属性动画并没有正常的从0-1000返回值,而是直接返回了0和1000,这样就会导致安卓的属性动画在android 9不支持,动画失效的问题。

问题点:假设利用属性动画实现一个左右移动的动画效果,设置插值器之后,动画效果没有一个移动过程的效果。
追踪: 通过获取插值器的"getInterpolation"方法,监听随着时间的变化,input值以及返回值的变化,如果返回值一直都没有改变那么就说明插值器设置不起作用,所以才没有移动过程的效果。
分析原因: 应该是当前你的设备 的 开发者选项中Animation duration scale 选项是关闭的。
解决方法: ① 你可以打开“开发者选项”中的“Animation duration scale" 。
② 通过代码打开: 代码如下
private IWindowManager  mWindowManager;

private static final int INDEX_ANIMATOR_DURATION_SCALE = 2;

private void setAnimationScaleOption(int which) {
  mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
    try {
        float scale = 1;
        mWindowManager.setAnimationScale(which, scale);
    } catch (RemoteException e) {
    }

找到手机的开发者选项,找到“动画程序时长缩放”选项,把这个选项打开以后,安卓属性动画就恢复正常了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值