hnahdfhb
2017-01-16 08:37
采纳率: 20%
浏览 7.3k

android属性动画卡顿问题,求大神指点迷津。

ValueAnimator colseAnimator = ValueAnimator.ofFloat(closeWidth, 0);
colseAnimator.addUpdateListener(new AnimatorUpdateListener() {

        LinearLayout.LayoutParams params = (LayoutParams) 
                closeView.getLayoutParams();
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {

            float f = (Float) animation.getAnimatedValue();
            params.width = (int) f;
            closeView.setLayoutParams(params);
        }
    });
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 陈者神龟 2017-01-16 08:49
    已采纳

    你可以尝试从这几个方面处理一下:
    1. 既然params.width是int类型的, 那么就不要使用ValueAnimator.ofFloat,直接使用ValueAnimator.ofInt, 避免强制类型转换。
    2. setLayoutParams后索性直接调用一下invalidate(),
    3. ValueAnimator如果时间太短的话可能导致回调onAnimationUpdate次数少, 看起来卡顿, 适当延长时间,
    另外interpolator(虽然你这里没有写)如果你有指定的话,尽量使用默认构造函数,不要指定小数,那将引发大运算量

    点赞 打赏 评论
  • hnahdfhb 2017-01-16 09:11

    图片说明

    点赞 打赏 评论
  • hnahdfhb 2017-01-16 09:11

    图片说明

    点赞 打赏 评论
  • IT小小搬运工 2017-01-16 09:15

    可以跟着这个从头做一遍,看看还会不会出现卡顿现象>>Android开发-属性动画项目公开课

    点赞 打赏 评论
  • hnahdfhb 2017-01-16 09:16

    图片说明

    点赞 打赏 评论

相关推荐