2012-05-12 7 views
-4

Я хочу установить layout_marginTop в 800px, используя setLayoutParams(). Но я хочу знать, что это будет в dp единицах?Конверсия между px и dp unit

Заранее благодарен.

+0

'LayoutParams' ожидает пиксель. Вы должны быть более конкретными ... – Knickedi

+1

Если вы пытаетесь преобразовать dip в px, то вот оно: 'int px = (int) (dip * mContext.getResources(). GetDisplayMetrics(). Плотность + 0.5f) '. Я до сих пор не понимаю, чего вы пытаетесь достичь. – Knickedi

+0

Основная идея в вопросах - конвертировать пиксели в dp. Я хочу знать 1dp =? Px на моем экране. – Zerntrino

ответ

2

Логическим density дисплея дается в DisplayMetrics классе, и могут быть получены с,

getResources().getDisplayMetrics().density 

Таким образом, для преобразования dp в px, вы могли бы сделать,

int density = getResources().getDisplayMetrics().density; 
int px = (int) (dp * density); 

Для конвертировать px в dp, просто выполнить обратную операцию,

int dp = px/density;