2 qq 36340344 qq_36340344 于 2017.01.16 21:01 提问

android 属性动画ValueAnimator改变控件宽度丢帧。求大神解答。 50C

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.requestLayout();
        }
    });

3个回答

JE_GE
JE_GE   2017.01.16 21:10
welan123123
welan123123   2017.01.17 09:07

你这种改变宽度的方法不对把,你的移动计算和宽度有关系的话,你再根据计算结果去修改宽度,肯定会造成丢帧,你的f值获取方式换一下

welan123123
welan123123 回复hnahdfhb: 回复hnahdfhb: 另外我建议把后面两个小人固定住吧,否则最后做出来也很别扭,只需要中间的小人移动,同时左边文字宽度减少右边文字宽度增加,宽度变化最好平滑一点,别一个字一个字减少
11 个月之前 回复
welan123123
welan123123 回复hnahdfhb: 你这动画移动的是中间的小人,后面的文字和后面两个小人是吧,你移动的同时改变文字的宽度也就意味着改变了移动对象整体的宽度,分开来写的意思是你移动单独作为一个动画,改变宽度单独作为一个动画
11 个月之前 回复
qq_36340344
qq_36340344 回复奔跑的小鱼儿: 其实就相当于ExpandableTextView“显示更多”差不多,文字的展开和收缩,只不过我需要的是横向的。大神我下面放上GIF图,上面的title,1,2展开和收缩就是我想要的效果了。
11 个月之前 回复
welan123123
welan123123 回复hnahdfhb: 你这怎么又出来个textview了,你先把你想要达到的效果说说
11 个月之前 回复
qq_36340344
qq_36340344 回复奔跑的小鱼儿: 宽度我是根据将要设置TextView的宽度来确定的,ontextWidth = oneText.getPaint().measureText(oneText.getText().toString());根据text和字体大小来确定宽度,初始值我设置的是0sp,请问你说的分开写是怎么操作呢? 感谢!!!
11 个月之前 回复
welan123123
welan123123 回复hnahdfhb: 你这代码不全我们能看到的东西很少啊,首先你改变控件宽度是根据使用 ValueAnimator 计算出来的属性值,这个值是怎么计算出来的,和宽度有关系吗?其次你这种方式确实会造成大量绘制,最好是把两个动画分开来写,最好再整合到一起
11 个月之前 回复
qq_36340344
qq_36340344 感谢回答!ValueAnimator不是可以修改属性值吗?是不是closeView.requestLayout();造成大量绘制造成的丢帧啊
11 个月之前 回复
qq_36340344
qq_36340344   2017.01.17 12:03

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!