public static void updateMeasureSpec(
      Spec spec,
      float aspectRatio,
      @Nullable ViewGroup.LayoutParams layoutParams,
      int widthPadding,
      int heightPadding) {
    if (aspectRatio <= 0 || layoutParams == null) {
      return;
    }
    if (shouldAdjust(layoutParams.height)) {
      int widthSpecSize = View.MeasureSpec.getSize(spec.width);
      int desiredHeight = (int) ((widthSpecSize - widthPadding) / aspectRatio + heightPadding);
      int resolvedHeight = View.resolveSize(desiredHeight, spec.height);
      spec.height = View.MeasureSpec.makeMeasureSpec(resolvedHeight, View.MeasureSpec.EXACTLY);
    } else if (shouldAdjust(layoutParams.width)) {
      int heightSpecSize = View.MeasureSpec.getSize(spec.height);
      int desiredWidth = (int) ((heightSpecSize - heightPadding) * aspectRatio + widthPadding);
      int resolvedWidth = View.resolveSize(desiredWidth, spec.width);
      spec.width = View.MeasureSpec.makeMeasureSpec(resolvedWidth, View.MeasureSpec.EXACTLY);
    }
  }
Updates the given measure spec with respect to the aspect ratio.

<p>Note: Measure spec is not changed if the aspect ratio is not greater than zero or if
layoutParams is null.

<p>Measure spec of the layout dimension (width or height) specified as "0dp" is updated to
match the measure spec of the other dimension adjusted by the aspect ratio. Exactly one layout
dimension should be specified as "0dp".

<p>Padding is taken into account so that the aspect ratio refers to the content without
padding: {@code aspectRatio == (viewWidth - widthPadding) / (viewHeight - heightPadding)}

<p>Updated measure spec respects the parent's constraints. I.e. measure spec is not changed if
the parent has specified mode {@code EXACTLY}, and it doesn't exceed measure size if parent has
specified mode {@code AT_MOST}.

@param spec in/out measure spec to be updated
@param aspectRatio desired aspect ratio
@param layoutParams view's layout params
@param widthPadding view's left + right padding
@param heightPadding view's top + bottom padding
drawee/src/main/java/com/facebook/drawee/view/AspectRatioMeasure.java