Android屏幕尺寸理解

3

我有一个分辨率为720x1280、密度为320dpi的模拟器。

现在,当我使用以下代码来查找dpheight、dpwidth和密度时:

    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics();
    display.getMetrics(outMetrics);

    float density  = getResources().getDisplayMetrics().density;
    float dpHeight = outMetrics.heightPixels / density;
    float dpWidth  = outMetrics.widthPixels / density;

我得到了以下数值:

06-24 06:47:46.027 D/Density ( 1003): 2.0
06-24 06:47:46.027 D/DPHeight( 1003): 592.0
06-24 06:47:46.027 D/DPWidth ( 1003): 360.0

我无法理解它的含义,请有人帮忙解释一下吗?
我打算开发一个涉及大量文本的应用程序,我想适当设置文本大小,以使其外观连贯。

是的,我已经阅读了谷歌关于此事的文档。
但我仍然无法理解,因此有了这个问题。


https://dev59.com/sGw15IYBdhLWcg3weLoF#6589124 - Sree
@Sree 我知道如何获取那些尺寸。density=2.0 是什么意思?这就是我不理解的地方。 - user3631116
2个回答

4

Density 2.0是你的好朋友。这是基础dpi(160 dpi = mdpi)的倍数。实际上:320 / 160 = 2.0

[编辑]

为了更清晰明了:

If your emulator is    then the density is    which actually is  

xxxhdpi                4.0                    640 dpi
 xxhdpi                3.0                    480 dpi
  xhdpi                2.0                    320 dpi
   hdpi                1.5                    240 dpi
   mdpi                1.0                    160 dpi
   ldpi                0.75                   120 dpi

那么您的意思是,模拟器的实际dpi是160dpi?如果我的问题显得有点幼稚,请原谅我。我需要一些真正的明确答案。 - user3631116
不,它是320 dpi。事实上,乘法比例为2.0。如果它是160 dpi,密度将等于1.0:160/160 = 1.0。 - Phantômaxx
DPI值和文本大小是直接成比例还是反比例关系? - user3631116
spdp 将会自动缩放,这就是为什么您更喜欢使用这些单位而不是 px。px 和 dp 之间有一个关系,它使用密度乘数。而 sp 和 dp 几乎相同 - 只用于文本大小。 - Phantômaxx
1
我在谈论普通布局,而不是我的应用程序布局。我还将东西移动到适当的密度桶中。感谢您的帮助。 - user3631116
显示剩余3条评论

0

2.0 是您屏幕的 像素 / dp 比率。因此,要获取您屏幕的 DP 大小,您需要将其像素大小除以您的 密度(2.0)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接