1. 如何為自定義View添加動畫效果
public void startAnimation() {
ValueAnimator anim = ValueAnimator.ofFloat(minValue, midValue, maxValue);
anim.setRepeatCount(ValueAnimator.INFINITE);//設置無限重復
anim.setRepeatMode(ValueAnimator.RESTART);//設置重復模式
anim.setDuration(1000);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
value = (Float) animation.getAnimatedValue();
postInvalidate();
}
});
anim.start();
}
即利用ValueAnimator造虏,在動畫的duration期間峻贮,產生一系列的value值雹食,然后不斷刷新來觸發(fā)View的重繪缓屠,重繪過程中用到了這些value值奇昙,從而達到了動畫效果
2.顏色漸變
int startColor = 0x33FFFFFF;
int endColor = 0xE6FF5800;
GradientDrawable gradient = (GradientDrawable) mButtonLayout.getBackground();
ValueAnimator colorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), startColor, endColor);
// ValueAnimator colorAnim = ValueAnimator.ofArgb(startColor, endColor);
colorAnim.setDuration(3000);
colorAnim.start();
colorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int color = (int) animation.getAnimatedValue();
gradient.setColor(color);
}
});