android - 从 Java 代码中指定 DIP 尺寸的正确方法是什么?

标签 android layout density-independent-pixel

我发现可以使用 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_SPCOMPLEX_UNIT_PT,所有这些都在我上面链接的页面中找到。如果排除 (int) 类型转换,您将获得 float 。

我也遇到了同样的问题,通过翻查代码发现了这个问题。

关于android - 从 Java 代码中指定 DIP 尺寸的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238883/

相关文章:

java - 将短信/彩信/联系人从 Android 传输到网络服务器

java - 将 EditText 动画移出窗口

css - 图像的网格问题

php - 如何在 PHP 中获取图像 DPI

java - 像素点,桌面和安卓

androidx 数据绑定(bind)错误 : package android. support.constraint 不存在

android - 检索JSON中的特定字段

xml - 在主题中扩展 Magento 小部件布局

java - 运行应用程序时布局不显示

android - 在 Android 中 .0 dp 是什么意思?