code: private void startStripedAnimationIfNeeded() {
          if (!striped || !animated) {
              return;
          }
  
          clearAnimation();
  
          progressAnimator = ValueAnimator.ofFloat(0, 0);
          progressAnimator.setDuration(UPDATE_ANIM_MS);
          progressAnimator.setRepeatCount(ValueAnimator.INFINITE);
          progressAnimator.setRepeatMode(ValueAnimator.RESTART);
  
          progressAnimator.setInterpolator(new LinearInterpolator());
          progressAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
              @Override
              public void onAnimationUpdate(ValueAnimator animation) {
                  invalidate();
              }
          });
          progressAnimator.start();
      }
docs: Starts an infinite animation cycle which provides the visual effect of stripes moving
  backwards. The current system time is used to offset tiled bitmaps of the progress background,
  producing the effect that the stripes are moving backwards.