这两个在数学方面做得一样吗?它们产生相同的结果吗?
爪哇:

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

XML:
android:layout_marginTop="10dp"

最佳答案

是的,它们是,getdisplaymetrics()中的密度是用于dip单元的密度,遵循documentation
公共浮子密度
在api级别1中添加了显示的逻辑密度。这是一个
密度无关像素单位的比例因子,其中一个倾斜
是大约160 dpi屏幕上的一个像素(例如
240x320,1.5“x2”屏幕),提供系统的基线
显示。因此,在160dpi屏幕上,该密度值为1;在
120 dpi屏幕将是.75;等。
此值与实际屏幕大小不完全一致(如
xdpi和ydpi,但用于缩放整个ui的大小
基于显示dpi中的总变化的步骤。例如,一个
240x320屏幕的密度为1,即使其宽度为1.8“,
1.3“,等。但是,如果屏幕分辨率增加到320x480,但屏幕尺寸仍为1.5“x2”,则密度为
增加(可能达到1.5)。

08-18 13:20