Пример #1
0
 @Override
 protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   for (ExplosionAnimator animator : explosionAnimators) {
     animator.draw(canvas);
   }
 }
Пример #2
0
  @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();
  }