com.facebook.react.uimanager.PixelUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.facebook.react.uimanager.PixelUtil.java

Source

/*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

package com.facebook.react.uimanager;

import android.util.DisplayMetrics;
import android.util.TypedValue;

/** Android dp to pixel manipulation */
public class PixelUtil {

    /** Convert from DIP to PX */
    public static float toPixelFromDIP(float value) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, value,
                DisplayMetricsHolder.getWindowDisplayMetrics());
    }

    /** Convert from DIP to PX */
    public static float toPixelFromDIP(double value) {
        return toPixelFromDIP((float) value);
    }

    /** Convert from PX to SP */
    public static float toSPFromPixel(float value) {
        return value / DisplayMetricsHolder.getScreenDisplayMetrics().scaledDensity;
    }

    /** Convert from SP to PX */
    public static float toPixelFromSP(float value) {
        return toPixelFromSP(value, Float.NaN);
    }

    /** Convert from SP to PX */
    public static float toPixelFromSP(float value, float maxFontScale) {
        DisplayMetrics displayMetrics = DisplayMetricsHolder.getWindowDisplayMetrics();
        float scaledDensity = displayMetrics.scaledDensity;
        float currentFontScale = scaledDensity / displayMetrics.density;
        if (maxFontScale >= 1 && maxFontScale < currentFontScale) {
            scaledDensity = displayMetrics.density * maxFontScale;
        }

        return value * scaledDensity;
    }

    /** Convert from SP to PX */
    public static float toPixelFromSP(double value) {
        return toPixelFromSP((float) value);
    }

    /** Convert from PX to DP */
    public static float toDIPFromPixel(float value) {
        return value / DisplayMetricsHolder.getWindowDisplayMetrics().density;
    }

    /** @return {@link float} that represents the density of the display metrics for device screen. */
    public static float getDisplayMetricDensity() {
        return DisplayMetricsHolder.getScreenDisplayMetrics().density;
    }
}