This works but the value I get is multiplied times the screen density factor
(1.5 for hdpi, 2.0 for xhdpi, etc).
我认为按分辨率获取值是很好的,但是如果您不想这样做,请以像素为单位……。
密度无关像素(dp)
在定义UI布局时应使用的虚拟像素单位,以密度独立的方式表示布局尺寸或位置。与密度无关的像素等效于160 dpi屏幕上的一个物理像素,这是系统为“中”密度屏幕假定的基线密度。在运行时,系统会根据需要透明地处理dp单位的任何缩放比例,based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels.
在定义应用程序的UI时应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI。
我认为最好根据分辨率更改值,但是如果您不想这样做,请以px .......表示。
参考此链接
按照这个
dp
与密度无关的像素-基于屏幕物理密度的抽象单位。这些单位相对于160 dpi(每英寸的点数)屏幕,在该屏幕上1dp大约等于1px。When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down.
dp与像素的比率将随屏幕密度而变化,但不一定成正比。使用dp单位(而不是px单位)是一种简单的解决方案,可以针对不同的屏幕密度正确调整布局中的视图尺寸。换句话说,它为跨不同设备的UI元素的实际大小提供了一致性。
像素
像素-对应于屏幕上的实际像素。不建议使用此度量单位,因为实际表示可能会因设备而异。每个设备每英寸可能具有不同数量的像素,并且屏幕上可用的总像素可能更多或更少。
getDimensionPixelSize(int id)
确切地指出了它以Pixel返回,因此getDimension(int id)
应该以dp(依赖于独立性的单位)返回,可以使用了,例如ViewsetPadding