docs: public void initialize(Context context, TimePickerController controller, boolean hasInnerCircle,
              boolean disappearsOut, int selectionDegrees, boolean isInnerCircle) {
          if (mIsInitialized) {
              Log.e(TAG, "This RadialSelectorView may only be initialized once.");
              return;
          }
  
          Resources res = context.getResources();
  
          int accentColor = controller.getAccentColor();
          mPaint.setColor(accentColor);
          mPaint.setAntiAlias(true);
  
          mSelectionAlpha = controller.isThemeDark() ? SELECTED_ALPHA_THEME_DARK : SELECTED_ALPHA;
  
          // Calculate values for the circle radius size.
          mIs24HourMode = controller.is24HourMode();
          if (mIs24HourMode || controller.getVersion() != TimePickerDialog.Version.VERSION_1) {
              mCircleRadiusMultiplier = Float.parseFloat(
                      res.getString(R.string.mdtp_circle_radius_multiplier_24HourMode));
          } else {
              mCircleRadiusMultiplier = Float.parseFloat(
                      res.getString(R.string.mdtp_circle_radius_multiplier));
              mAmPmCircleRadiusMultiplier =
                      Float.parseFloat(res.getString(R.string.mdtp_ampm_circle_radius_multiplier));
          }
  
          // Calculate values for the radius size(s) of the numbers circle(s).
          mHasInnerCircle = hasInnerCircle;
          if (hasInnerCircle) {
              mInnerNumbersRadiusMultiplier =
                      Float.parseFloat(res.getString(R.string.mdtp_numbers_radius_multiplier_inner));
              mOuterNumbersRadiusMultiplier =
                      Float.parseFloat(res.getString(R.string.mdtp_numbers_radius_multiplier_outer));
          } else {
              mNumbersRadiusMultiplier =
                      Float.parseFloat(res.getString(R.string.mdtp_numbers_radius_multiplier_normal));
          }
          mSelectionRadiusMultiplier =
                  Float.parseFloat(res.getString(R.string.mdtp_selection_radius_multiplier));
  
          // Calculate values for the transition mid-way states.
          mAnimationRadiusMultiplier = 1;
          mTransitionMidRadiusMultiplier = 1f + (0.05f * (disappearsOut? -1 : 1));
          mTransitionEndRadiusMultiplier = 1f + (0.3f * (disappearsOut? 1 : -1));
          mInvalidateUpdateListener = new InvalidateUpdateListener(this);
  
          setSelection(selectionDegrees, isInnerCircle, false);
          mIsInitialized = true;
      }