阅读量:0
MeasureSpec是Android中用来测量View的尺寸的工具类,一般用于在View的measure()方法中使用。如果想通过MeasureSpec做动画,可以结合属性动画来实现。
首先,可以通过属性动画来改变View的尺寸。在属性动画中,可以通过改变View的LayoutParams来实现View的尺寸改变。在动画的过程中,可以动态设置View的MeasureSpec,然后调用View的requestLayout()方法来重新布局View。
具体的做法如下:
- 创建一个属性动画,改变View的LayoutParams的宽高属性。
- 在动画的过程中,根据需要改变View的MeasureSpec,然后调用View的requestLayout()方法。
- 在View的onMeasure()方法中,根据MeasureSpec来测量View的尺寸。
下面是一个简单的示例代码:
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; // 根据需要改变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和属性动画实现View的尺寸改变动画了。需要注意的是,在动画更新的时候,一定要重新测量View并请求重新布局,才能实现动画效果。