我发现方法getDimension和getDimensionPixelSize令人困惑。
在我看来,好像getDimension将返回存储在维度中的实际值,例如10dp和getDimensionPixelSize会将其转换为px。
但两者似乎做同样的事情......
答案 0 :(得分:40)
getDimension()
返回一个浮点数,它是用当前显示指标调整的维数值:
getDimensionPixelSize()
返回一个整数。它与getDimension()
四舍五入到int
相同,任何非零维度都必须至少保持一个像素大小。
对于整数维值,它们都返回相同的数值。
答案 1 :(得分:3)
我觉得你在 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。