如何让多个点扩散再聚合?
like this:
效果图
一、如何绘制多个点为一个圆形
该篇主要讲,如何让点扩散再聚合
二、如何让多个点扩散再聚合呢?
1、原理分析:
该效果可分为两步:先将点扩散、再将点聚合在一起。
扩散:可以通过放大,点围成的圆的半径。
聚合:也是一样的,就是缩小点围成的圆的半径。
这里会使用到OvershootInterpolator插值器。该插值器,到一定值后,又会再回到原来位置。刚好可以实现聚合的效果。
2、具体实现:
定义属性动画
//mCircleRadius小球的半径
//mRadius小球围成的圆的半径
ValueAnimator mAnimator = ValueAnimator.ofFloat(mCircleRadius,mRadius);
mAnimator.setDuration(1000);
//OvershootInterpolator 向前甩一定值后再回到原来位置
// (tension=20,影响扩大比例的值)
mAnimator.setInterpolator(new OvershootInterpolator(20f));
//mAnimator.setRepeatCount(2);//默认0,执行一次
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//扩散圆的半径的变化值
mCurrentRadius = (float)animation.getAnimatedValue();
invalidate();
}
});
//reverse()动画反向执行
mAnimator.reverse();
绘制小球:
private void drawBallStat