有时候需要做到余额宝 动画 刷新收益 那种效果,以下是基于ObjectAnimator的一种实现:
- 代码实现
package com.jc.customview;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.TextView;
import com.jc.R;
public class AnimationCountView extends TextView {
private final static int DEFAULT_DURATION = 500;
private int duration = DEFAULT_DURATION; // animation duration
private float number;
public AnimationCountView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AnimationCountView);
if (typedArray != null) {
duration = typedArray.getInt(R.styleable.AnimationCountView_duration, DEFAULT_DURATION);
typedArray.recycle();
}
}
public void showNumber(final float value) {
number = value;
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(this,"number", 0, value);// 'number' is the property name.
objectAnimator.setDuration(duration);
objectAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
objectAnimator.start();// will call setNumber method.
}
public float getNumber() {
return number;
}
public void setNumber(float value) {
setText(String.format("%.2f", value)); // two decimals.
}
}
- attrs.xml 配置 attr
<attr name="duration" format="integer" />
</declare-styleable>