android - 从源代码的 res/values/dimension.xml 加载维度值

标签 android android-resources dpi dimension

我想按原样加载该值。 我有两个 dimension.xml 文件,一个在 /res/values/dimension.xml 中,另一个在 /res/values-sw360dp/dimension.xml

从源代码我想做类似的事情

getResources().getDimension(R.dimen.tutorial_cross_marginTop);

这可行,但我得到的值乘以屏幕密度因子(hdpi 为 1.5,xhdpi 为 2.0 等)。

我也试过了

getResources().getString(R.dimen.tutorial_cross_marginTop);

这原则上可行,但我得到一个以“dip”结尾的字符串...

最佳答案

在我的dimens.xml 中有

<dimen name="test">48dp</dimen>

在代码中如果我这样做

int valueInPixels = (int) getResources().getDimension(R.dimen.test)

这将返回 72,因为文档状态乘以当前手机的密度(在我的情况下为 48dp x 1.5)

正如文档所述:

Retrieve a dimensional for a particular resource ID. Unit conversions are based on the current DisplayMetrics associated with the resources.

因此,如果您想要精确的 dp 值,就像在 xml 中一样,只需将其除以 DisplayMetrics 密度

int dp = (int) (getResources().getDimension(R.dimen.test) / getResources().getDisplayMetrics().density);

dp 现在是 48

关于android - 从源代码的 res/values/dimension.xml 加载维度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11121028/

相关文章:

android - 如何在UI底部的固定位置设置按钮?

android - 如何禁用 Android Studio 中的 lambda 功能?

java - ResourcesCompat.getDrawable() 与 AppCompatResources.getDrawable()

android - 将 Android 应用中的语言更改为不受支持的语言

delphi - Delphi Seattle 中运行时 DPI 更改后如何处理菜单缩放

java - 如何在 Java 中设置 PNG 的每平方英寸点数 (DPI)?

java - 将模型类中的数据赋值给数组,并根据传入的数据发送通知给用户

android - DocumentContract 上的 ContentResolver 查询列出所有文件,忽略选择

android - 禁用 Android 资源/图像/PNG 优化

Android:使用具有不同像素密度的图像的目的是什么?