2016-09-01 6 views
1

Я конвертирую px в dp для данной графики. Просматривая документы, я заметил, что 1dp = 3px для экрана 480ppi (xxhdpi).пикселей на dp-преобразователь на основе ppi

Я тестирую его на Redmi Note3, который имеет около 403 точек на дюйм.

Мне предоставили поля в пикселях от моего дизайнера. Должен ли я конвертировать эти в пикселах, используя соотношение 1: 3 или она должна быть разной

+1

Возможный дубликат [Преобразование пикселей дп] (HTTP://stackoverflow.com/questions/4605527/converting-pixels-to-dp) –

ответ

1
/** 
* 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