【发布时间】:2015-03-19 08:38:00
【问题描述】:
这两个在数学方面做同样的事情吗?它们产生相同的结果吗?
Java:
pixel=10;
margin=px * getResources().getDisplayMetrics().density;
layout_param.topMargin=margin;
XML:
android:layout_marginTop="10dp"
【问题讨论】:
这两个在数学方面做同样的事情吗?它们产生相同的结果吗?
Java:
pixel=10;
margin=px * getResources().getDisplayMetrics().density;
layout_param.topMargin=margin;
XML:
android:layout_marginTop="10dp"
【问题讨论】:
是的,getDisplayMetrics() 中的密度是documentation 之后用于倾角单位的密度:
公众持股量
在 API 级别 1 中添加了显示的逻辑密度。这是一个 密度无关像素单元的比例因子,其中一个 DIP 是大约 160 dpi 屏幕上的一个像素(例如 240x320, 1.5"x2" 屏幕),提供系统的基线 展示。因此,在 160dpi 屏幕上,此密度值为 1;在一个 120 dpi 屏幕将是 0.75;等等
这个值并不完全符合真实的屏幕尺寸(由 xdpi 和 ydpi,而是用于缩放整个 UI 的大小 根据显示 dpi 的总体变化分步进行。例如,一个 240x320 屏幕的密度为 1,即使其宽度为 1.8", 1.3" 等。但是,如果屏幕分辨率增加到 320x480 但屏幕尺寸保持为 1.5"x2",那么密度将为 增加(可能到 1.5)。
【讨论】: