code: public static float getFraction(@NonNull final Context context,
                                      @StyleRes final int themeResourceId,
                                      @AttrRes final int resourceId, final int base,
                                      final int pbase) {
          TypedArray typedArray = null;
  
          try {
              typedArray = obtainStyledAttributes(context, themeResourceId, resourceId);
              float fraction = typedArray.getFraction(0, base, pbase, -1);
  
              if (fraction == -1) {
                  throw new NotFoundException(
                          "Resource ID #0x" + Integer.toHexString(resourceId) + " is not valid");
              }
  
              return fraction;
          } finally {
              if (typedArray != null) {
                  typedArray.recycle();
              }
          }
      }
docs: Obtains the fraction, which corresponds to a specific resource id, from a specific theme. If
  the given resource id is invalid, a {@link NotFoundException} will be thrown.
  
  @param context
  The context, which should be used, as an instance of the class {@link Context}. The
  context may not be null
  @param themeResourceId
  The resource id of the theme, the attribute should be obtained from, as an {@link
  Integer} value or -1, if the attribute should be obtained from the given context's
  theme
  @param resourceId
  The resource id of the attribute, which should be obtained, as an {@link Integer}
  value. The resource id must corresponds to a valid theme attribute
  @param base
  The base value of this fraction as an {@link Integer} value. A standard fraction is
  multiplied by this value
  @param pbase
  The parent base value of this fraction as an {@link Integer} value. A parent fraction
  (nn%p) is multiplied by this value
  @return The fraction, which has been obtained, as a {@link Float} value