我觉得getDimension和getDimensionPixelSize这两个方法很令人困惑。
从字面上理解,getDimension应该返回存储在尺寸中的实际值,例如10dp,而getDimensionPixelSize则将其转换为px并返回。
但是实际上它们似乎都做同样的事情...
从字面上理解,getDimension应该返回存储在尺寸中的实际值,例如10dp,而getDimensionPixelSize则将其转换为px并返回。
但是实际上它们似乎都做同样的事情...
getDimension()
返回一个浮点数,该浮点数是根据当前显示度量调整后的dimen值:
getDimensionPixelSize()
返回一个整数。它与getDimension()
相同,但将其四舍五入为一个int
,并确保任何非零尺寸至少有一个像素大小。
对于整数维度值,它们都返回相同的数值。
我认为很明显你正在一个mdpi设备或模拟器上进行测试。
在mdpi屏幕上,1px = 1dp。
所以,只需在不同密度的屏幕上测试这些方法即可。
注意
public float getDimension (int id)
Retrieve a dimensional for a particular resource ID.
Unit conversions are based on the current DisplayMetrics associated with the resources.
Parameters
id The desired resource identifier, as generated by the aapt tool.
This integer encodes the package, type, and resource entry. The value 0 is an invalid identifier.
Returns
Resource dimension value multiplied by the appropriate metric.
因此,如果您在xml布局中将单位设置为px,则会得到原始的px值(未转换)。
否则,如果您在xml布局中正确地将单位设置为dp,则会获得正确的px转换。