gpt4 book ai didi

android - 公式 px 到 dp,dp 到 px android

转载 作者:IT老高 更新时间:2023-10-28 12:57:05 27 4
gpt4 key购买 nike

我正在尝试将可变数量的像素计算为与密度无关的像素,反之亦然。

这个公式 (px to dp): dp = (int)(px/(displayMetrics.densityDpi/160)); 不适用于小型设备,因为它被零除。

这是我的 dp 到 px 公式:

px = (int)(dp * (displayMetrics.densityDpi / 160));

有人可以指点一下吗?

最佳答案

注意:上面广泛使用的解决方案是基于displayMetrics.density。但是,文档解释说这个值是一个四舍五入的值,与屏幕“桶”一起使用。例如。在我的 Nexus 10 上,它返回 2,其中实际值为 298dpi(真实)/160dpi(默认)= 1.8625。

根据您的要求,您可能需要精确的转换,可以这样实现:

[编辑] 这并不意味着与 Android 的内部 dp 单元混合,因为这当然仍然基于屏幕存储桶。在您想要一个在不同设备上呈现相同实际尺寸的单元时使用它。

将dp转换为像素:

public int dpToPx(int dp) {
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}

将像素转换为dp:

public int pxToDp(int px) {
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
return Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
}

请注意,有 xdpi 和 ydpi 属性,您可能想要区分,但我无法想象这些值差异很大的正常显示。

关于android - 公式 px 到 dp,dp 到 px android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com