code: @Override
      public void setChecked(final boolean checked) {
          if (mChecked == checked)
              return;
  
          if (mAllowCheckStateAnimation) {
              final int duration = 150;
              final Interpolator interpolator = new DecelerateInterpolator();
              ObjectAnimator animation = ObjectAnimator.ofFloat(this, "scaleX", 1f, 0f);
              animation.setDuration(duration);
              animation.setInterpolator(interpolator);
              animation.addListener(new AnimatorListenerAdapter() {
                  @Override
                  public void onAnimationEnd(Animator animation) {
                      mChecked = checked;
                      invalidate();
                      ObjectAnimator reverse = ObjectAnimator.ofFloat(CircularImageView.this, "scaleX", 0f, 1f);
                      reverse.setDuration(duration);
                      reverse.setInterpolator(interpolator);
                      reverse.start();
                  }
              });
              animation.start();
          } else {
              mChecked = checked;
              invalidate();
          }
      }
docs: Checkable