Android View 的尺寸大小变化的时候要求有一个过度的动画

来源:互联网 发布:淘宝店铺标志怎么没了 编辑:程序博客网 时间:2024/04/29 19:08

最近在项目里有个需求要求一个View 的尺寸大小变化的时候要求有一个过度的动画(view.getLayoutParams().height 100--->400)查看了一些资料后成功搞定,下面跟大家一起分享


解决的方法主要是继承Animation重写里面的几个方法,成功搞定

@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {    view.getLayoutParams().height = initialHeight + (int) ((targetHeight - initialHeight) * interpolatedTime);    view.getLayoutParams().width = initialWidth + (int) ((targetWidth - initialWidth) * interpolatedTime);    view.requestLayout();}@Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) {    this.initialHeight = height;    this.initialWidth = width;    super.initialize(width, height, parentWidth, parentHeight);}@Overridepublic boolean willChangeBounds() {    return true;}
废话不多说,直接上代码

public class ViewSizeChangeAnimation extends Animation {    int initialHeight;    int targetHeight;    int initialWidth;    int targetWidth;    View view;    public ViewSizeChangeAnimation(View view, int targetHeight,int targetWidth) {        this.view = view;        this.targetHeight = targetHeight;        this.targetWidth = targetWidth;    }    @Override    protected void applyTransformation(float interpolatedTime, Transformation t) {        view.getLayoutParams().height = initialHeight + (int) ((targetHeight - initialHeight) * interpolatedTime);        view.getLayoutParams().width = initialWidth + (int) ((targetWidth - initialWidth) * interpolatedTime);        view.requestLayout();    }    @Override    public void initialize(int width, int height, int parentWidth, int parentHeight) {        this.initialHeight = height;        this.initialWidth = width;        super.initialize(width, height, parentWidth, parentHeight);    }    @Override    public boolean willChangeBounds() {        return true;    }}

最后在代码中调用

Animation animation = new ViewSizeChangeAnimation(imageView, isHide ? 100 : 1000, isHide ? 100 : 1000);animation.setDuration(500);imageView.startAnimation(animation);

好了,就这么简单,更多文章请移步学购网www.xuegou121.com


demo下载地址

0 0
原创粉丝点击