android ValueAnimator属性动画 onAnimationUpdate回调异常?

 mobiledu2502863683 发布于 2022-10-31 22:02

使用属性动画遇到异常以下是我的代码,点击一个View然后这个View执行一个高度变化的动画。但是动画没有按照预期出现。加上LOG以后发现动画的回调只调了两次,而且返回的值是最大值。各路大神求解!

 @Override
 public void onClick(View v) {
     switch (v.getId()) {
        case R.id.product_item_top_rl: 
        startAnimation(v);
        break;
     }
 }
 
private void startAnimation(final View v) {
    int height = v.getHeight();
    ValueAnimator va = ValueAnimator.ofInt(0, height);
    va.setDuration(1000);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        public void onAnimationUpdate(ValueAnimator animation) {
            Log.d(TAG, "animation : " + animation.getAnimatedValue());
            v.getLayoutParams().height = (Integer) animation.getAnimatedValue();
            v.requestLayout();
        }
    });
    va.start();
}

D/ChooseProductFragment: animation : 150
D/ChooseProductFragment: animation : 150

2 个回答
  • 你没有指定动画的循环次数和方式,应该加上

    //无限循环
    va.setRepeatCount(ValueAnimator.INFINITE);
    //从头开始动画
    va.setRepeatMode(ValueAnimator.RESTART);
    2022-10-31 23:41 回答
  • 问题解决了。是因为我昨天为了用espresso做UI自动化测试,在设置里面关闭了“窗口动画缩放”,“过度动画缩放”,“动画程序时长调整”这三个动画。重新开放这些动画就正常了。

    2022-10-31 23:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有