这两个在数学方面做的相同吗?它们会产生相同的结果吗?
爪哇:
pixel=10;
margin=px * getResources().getDisplayMetrics().density;
layout_param.topMargin=margin;
XML:
android:layout_marginTop="10dp"
答案 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)。