【问题标题】:Android understanding screen sizesAndroid 了解屏幕尺寸
【发布时间】:2015-09-10 06:08:31
【问题描述】:

我有一个模拟器,屏幕分辨率为 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

我无法理解它。有人可以给它遮光吗?
我打算开发一个包含大量文本的应用程序,并且我想适当地设置文本大小以使其看起来一致。

是的,我已经阅读了 Google 的相关文档。
但我无法理解,因此提出了这个问题。

【问题讨论】:

标签: android


【解决方案1】:

Density 2.0 是你的朋友。这是基本 dpi (160 dpi = mdpi) multiplier。事实上: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?请原谅我,如果我的问题看起来有点幼稚。我需要对此进行一些真正的澄清。
  • 不,它是 320 dpi。事实上,乘法尺度是2.0。如果是 160 dpi,则密度将等于 1.0160 / 160 = 1.0
  • 您编辑的答案真的很有帮助。那么文本大小如何在所有场景中起作用。假设我定义了 small_text=14sp 如何为这个 small_text 分配值,以便它在所有设备上都能很好地扩展?
  • dpi 值和文本大小是成正比还是成反比?
  • 我说的是普通布局而不是我的应用程序的布局。我也在将东西移到适当的密度桶中。感谢您的帮助。
【解决方案2】:

2.0 是你屏幕的pixels / dp 的比例。因此,要获得DP 中的屏幕大小,您需要将其大小(以像素为单位)除以Density (2.0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多