docs: @VisibleForTesting void configureBounds() {
      Drawable underlyingDrawable = getCurrent();
      Rect bounds = getBounds();
      int viewWidth = bounds.width();
      int viewHeight = bounds.height();
      int underlyingWidth = mUnderlyingWidth = underlyingDrawable.getIntrinsicWidth();
      int underlyingHeight = mUnderlyingHeight = underlyingDrawable.getIntrinsicHeight();
  
      // If the drawable has no intrinsic size, we just fill our entire view.
      if (underlyingWidth <= 0 || underlyingHeight <= 0) {
        underlyingDrawable.setBounds(bounds);
        mDrawMatrix = null;
        return;
      }
  
      // If the drawable fits exactly, no transform needed.
      if (underlyingWidth == viewWidth && underlyingHeight == viewHeight) {
        underlyingDrawable.setBounds(bounds);
        mDrawMatrix = null;
        return;
      }
  
      // If we're told to scale to fit, we just fill our entire view.
      // (ScaleType.getTransform would do, but this is faster)
      if (mScaleType == ScaleType.FIT_XY) {
        underlyingDrawable.setBounds(bounds);
        mDrawMatrix = null;
        return;
      }
  
      // We need to do the scaling ourselves, so have the underlying drawable use its preferred size.
      underlyingDrawable.setBounds(0, 0, underlyingWidth, underlyingHeight);
      mScaleType.getTransform(
          mTempMatrix,
          bounds,
          underlyingWidth,
          underlyingHeight,
          (mFocusPoint != null) ? mFocusPoint.x : 0.5f,
          (mFocusPoint != null) ? mFocusPoint.y : 0.5f);
      mDrawMatrix = mTempMatrix;
    }