MeasureSpec是Android中用來測(cè)量View的尺寸的工具類,一般用于在View的measure()方法中使用。如果想通過MeasureSpec做動(dòng)畫,可以結(jié)合屬性動(dòng)畫來實(shí)現(xiàn)。
首先,可以通過屬性動(dòng)畫來改變View的尺寸。在屬性動(dòng)畫中,可以通過改變View的LayoutParams來實(shí)現(xiàn)View的尺寸改變。在動(dòng)畫的過程中,可以動(dòng)態(tài)設(shè)置View的MeasureSpec,然后調(diào)用View的requestLayout()方法來重新布局View。
具體的做法如下:
下面是一個(gè)簡單的示例代碼:
ObjectAnimator animator = ObjectAnimator.ofInt(view, "width", 100, 200);
animator.setDuration(1000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int value = (int) animation.getAnimatedValue();
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = value;
// 根據(jù)需要改變MeasureSpec
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(value, MeasureSpec.EXACTLY);
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(params.height, MeasureSpec.EXACTLY);
view.measure(widthMeasureSpec, heightMeasureSpec);
view.requestLayout();
}
});
animator.start();
這樣就可以通過MeasureSpec和屬性動(dòng)畫實(shí)現(xiàn)View的尺寸改變動(dòng)畫了。需要注意的是,在動(dòng)畫更新的時(shí)候,一定要重新測(cè)量View并請(qǐng)求重新布局,才能實(shí)現(xiàn)動(dòng)畫效果。