基于ppi的像素到dp转换器

时间:2016-09-01 07:51:35

标签: android ppi

我正在将px转换为dp以获得给定的图形。通过文档,我注意到480ppi屏幕(xxhdpi)的1dp = 3px。

我正在Redmi Note3上测试它,它有大约403 ppi。

我的设计师已为像素提供了边距。我应该使用1:3的比例将它们转换为像素,还是应该是不同的

1 个答案:

答案 0 :(得分:3)

/**
 * This method converts dp unit to equivalent pixels, depending on device density. 
 * 
 * @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels
 * @param context Context to get resources and device specific display metrics
 * @return A float value to represent px equivalent to dp depending on device density
 */
public static float convertDpToPixel(float dp, Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float px = dp * ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
    return px;
}

/**
 * This method converts device specific pixels to density independent pixels.
 * 
 * @param px A value in px (pixels) unit. Which we need to convert into db
 * @param context Context to get resources and device specific display metrics
 * @return A float value to represent dp equivalent to px value
 */
public static float convertPixelsToDp(float px, Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float dp = px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
    return dp;
}

有关详细信息,请查看此SOF帖子Converting pixels to dp