我正在尝试为布局宽度的变化设置动画。我试图动画的布局元素是RelativeLayout。它包含使用规则 ALIGN_PARENT_BOTTOM 定位的 TextView。我通过扩展RelativeLayout 视图组从代码中创建所有内容。
以下是构造函数的一部分:
1 title = new TextView(c);
2 LayoutParams tvParams = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
3 tvParams.addRule(ALIGN_PARENT_BOTTOM);
4 title.setLayoutParams(tvParams);
5 title.setText(this.feed.title);
6 this.addView(title);
这是 ValueAnimator:
mScaleX = ValueAnimator.ofInt(mParamsOriginal.width, mParamsLarge.width);
mScaleX.setInterpolator(new LinearInterpolator());
mScaleX.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int val = (Integer) valueAnimator.getAnimatedValue();
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) getLayoutParams();
layoutParams.width = val;
requestLayout();
}
});
然后我评论第 2-4 行,然后将 TextView 放在它工作得很好的布局上。否则分析器说它会导致不断地重新测量视图,并且设备将 90% 的处理器时间花在它上面。
那么,有没有办法解决这个问题呢?