private final ValueAnimator getCircleAnimator() {
        if (valueAnimator == null) {
            valueAnimator = ValueAnimator.ofFloat(new float[]{0.0F, 1.0F});
            valueAnimator.setDuration(getAnimationDuration());

            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    invalidateWithCurrentRadius((float)animation.getAnimatedValue());
                }
            });

            valueAnimator.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                    setVisibility(View.VISIBLE);
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    if (!forceReset)
                        performAtEnd.run();
                }

                @Override
                public void onAnimationCancel(Animator animation) {

                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }
            });
        }

        return valueAnimator;
    }
View class

Draws a arc shape and provides a circle scaling animation.
Used by [YouTubeOverlay][com.github.vkay94.dtpv.youtube.YouTubeOverlay].
app/src/main/java/com/brouken/player/dtpv/youtube/views/CircleClipTapView.java