以像素为单位的Android定位有效,但不应该

时间:2013-01-03 21:25:47

标签: java android pixel

我一直在使用像素在表面视图上定位事物(位图,文本)。例如,为了居中,我将占据代表屏幕的矩形的一半宽度和高度。屏幕宽度和高度按预期返回。我的手机(480 * 800)报告可用屏幕为442 * 800,密度为1.5,在240 * 320仿真器上运行,可用屏幕报告为221 * 320,密度为0.75。一切如预期。

但是,这些值肯定是像素,所以我必须首先将中心的一部分乘以密度因子才能减半。奇怪的是,在低分辨率模拟器和高分辨率手机上,一切都完美地居中。这对我没有意义。

在两个屏幕上,为了使文本显示相同,我使用密度缩放值设置大小,正如我所期望的那样,这是有效的。

在清单中,我宣布支持所有屏幕尺寸(尽管在我这样做之前我也看到了相同的'正确'行为)

为什么像素值“工作”而没有我调整它们的密度?我现在很困惑。

1 个答案:

答案 0 :(得分:2)

像素是像素是像素!

它是屏幕和尺寸的最小公分母。

密度是指以度量单位打包的像素数,通常是一英寸。在物理显示器上。

例如,物理宽度为5英寸,分辨率为500x1000时,密度为200dpi(5英寸为1000像素)。物理宽度为4英寸,分辨率相同,密度为250dpi(4英寸为1000像素)。

x = 500(宽度的一半)是两者上屏幕的中心,与密度无关。实际上,对于任何尺寸的屏幕,任何密度的像素宽度的一半都是屏幕的中心。