@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (ExplosionAnimator animator : explosionAnimators) { animator.draw(canvas); } }
@SuppressLint("NewApi") @TargetApi(Build.VERSION_CODES.HONEYCOMB) private void explode(final View view, Rect rect) { final ExplosionAnimator animator = new ExplosionAnimator( this, ExplosionUtils.createBitmapFromView(view), rect, mParticleFactory); explosionAnimators.add(animator); explosionAnimatorsMap.put(view, animator); animator.addListener( new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { // 缩小,透明动画 view.animate().setDuration(150).scaleX(0f).scaleY(0f).alpha(0f).start(); } @Override public void onAnimationEnd(Animator animation) { view.animate().alpha(1f).setDuration(150).start(); // 动画结束时从动画集中移除 explosionAnimators.remove(animation); explosionAnimatorsMap.remove(view); animation = null; } }); animator.start(); }