code: void draw(Canvas canvas) {
  		updateRadius();
  		drawRipple(canvas);
  		ViewInvalidator invalidator = getActionButton().getInvalidator();
  		if (isDrawingInProgress()) {
  			invalidator.requireInvalidation();
  			LOGGER.trace("Drawing Ripple Effect in progress, invalidating the Action Button");
  		} else if (isDrawingFinished() && !isPressed()) {
  			invalidator.requireDelayedInvalidation();
  			invalidator.setInvalidationDelay(POST_INVALIDATION_DELAY_MS);
  			LOGGER.trace("Completed Ripple Effect drawing, posting the last invalidate");
  		}
  	}
docs: Performs the entire Ripple Effect drawing frame by frame animating the process
  <p>
  Calls the {@link ActionButton#postInvalidate()} after each {@link #currentRadius} update
  to draw the current frame animating the ripple effect drawing
  
  @param canvas canvas, which the Ripple Effect is drawing on