0
点赞
收藏
分享

微信扫一扫

Android 重写Animation实现实现下拉图片后弹射回去效果


解析:
1)interpolatedTime指的是平移的变化率(从0到1)
2)mStartHeight 控件开始的高度
3)endHeight 控件竖直移动后的高度
4)mImageView.requestLayout(); 图片在改变高度后填充布局并固定
5)ValueUtil.evalute(interpolatedTime, mStartHeight, mEndHeight) + 0.5f) 得到变化后的高度


代码:

/**
 * @描述         使用平移动画实现下拉图片后弹射回去
 * @项目名称      App_imooc
 * @包名         com.android.imooc.paralla
 * @类名         ResetAnimation
 * @author      chenlin
 * @date        2015年5月29日 下午12:27:00
 * @version     1.0
 */

public class ResetAnimation extends Animation {
    private ImageView mImageView;
    private int mStartHeight;
    private int mEndHeight;

    public ResetAnimation(ImageView imageView, int startHeight, int endHeight) {
        this.mImageView = imageView;
        this.mStartHeight = startHeight;
        this.mEndHeight = endHeight;

        setDuration(500);
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        int newHeight = (int) (ValueUtil.evalute(interpolatedTime, mStartHeight, mEndHeight) + 0.5f);
        mImageView.getLayoutParams().height = newHeight;
        mImageView.requestLayout();
        super.applyTransformation(interpolatedTime, t);
    }
}

3、使用方法:
//竖直移动动画

ResetAnimation anim = new ResetAnimation(mImageView, startHeight, endHeight);
anim.setInterpolator(new OvershootInterpolator());
startAnimation(anim);


举报

相关推荐

0 条评论