getDisplayMetrics()。density vs dp

时间:2013-12-12 15:02:59

标签: android margin

这两个在数学方面做的相同吗?它们会产生相同的结果吗?

爪哇:

pixel=10;
margin=px * getResources().getDisplayMetrics().density;
layout_param.topMargin=margin;

XML:

android:layout_marginTop="10dp"

1 个答案:

答案 0 :(得分:2)

是的,它们是,getDisplayMetrics()中的密度是documentation之后用于dip单位的密度:

  

公共浮动密度

     

在API级别1中添加了显示的逻辑密度。这是一个   密度独立像素单元的缩放因子,其中一个DIP   是大约160 dpi屏幕上的一个像素(例如a   240x320,1.5“x2”屏幕),提供系统的基线   显示。因此,在160dpi屏幕上,此密度值将为1;在...上   120 dpi的屏幕,它将是0.75;等

     

此值并不完全符合实际屏幕尺寸(由...给出)   xdpi和ydpi,而是用于缩放整个UI的大小   基于显示dpi的总变化的步骤。例如,a   即使宽度为1.8英寸,240x320屏幕的密度也为1,   1.3“等。但是,如果屏幕分辨率增加到320x480,但屏幕尺寸保持在1.5”x2“那么密度将是   增加(可能增加到1.5)。