我发现可以使用 DIP 在 XML 布局中设置界面元素的尺寸,如下所示:
android:layout_width="10dip"
但所有 Java 接口(interface)都将整数作为参数,并且无法在 DIP 中指定维度。计算这个的正确方法是什么?
我认为我必须使用 DisplayMetrics
类的属性密度,但这是正确的方法吗?
我可以相信这个公式总是正确的吗?
pixels * DisplayMetrics.density = dip
Android 中是否有用于转换的实用函数?
最佳答案
有一个名为 TypedValue.applyDimensions(int, float, DisplayMetrics)
的现有实用程序方法。这样做。
使用方法如下:
// returns the number of pixels for 123.4dip
int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
(float) 123.4, getResources().getDisplayMetrics());
您可以使用其他类型的列表,包括 COMPLEX_UNIT_SP
、COMPLEX_UNIT_PT
,所有这些都在我上面链接的页面中找到。如果排除 (int) 类型转换,您将获得 float 。
我也遇到了同样的问题,通过翻查代码发现了这个问题。
关于android - 从 Java 代码中指定 DIP 尺寸的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238883/