最近在一个项目中 View 控件的大小变化的时候要求有个过度的动画,查看了些资料后搞定了
|
In my app there is a LinearLayout which has 0 Layout height. When I click the button this layout height should be LayoutParams.WRAP_CONTENT. This is the code I use in onclicklistner
.我的思路是继承Animation 重写里面的几个方法,轻松搞定
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
view.getLayoutParams().height = initialHeight + (int) ((targetHeight - initialHeight) * interpolatedTime);
view.requestLayout();
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
this.initialHeight = height;
super.initialize(width, height, parentWidth, parentHeight);
}
@Override
public boolean willChangeBounds() {
return true;
}
废话不多说,直接上代码
public class ViewSizeChangeAnimation extends Animation {
int targetHeight;
int initialHeight;
View view;
public ViewSizeChangeAnimation(View view, int targetHeight) {
this.view = view;
this.targetHeight = targetHeight;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
view.getLayoutParams().height = initialHeight + (int) ((targetHeight - initialHeight) * interpolatedTime);
view.requestLayout();
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
this.initialHeight = height;
super.initialize(width, height, parentWidth, parentHeight);
}
@Override
public boolean willChangeBounds() {
return true;
}
}
9down votefavorite 2 | In my app there is a LinearLayout which has 0 Layout height. When I click the button this layout height should be LayoutParams.WRAP_CONTENT. This is the code I use in onclicklistner. |