【问题标题】:Android: what is the difference between resolution and density?Android:分辨率和密度有什么区别?
【发布时间】:2011-04-01 21:06:22
【问题描述】:

根据 Android 定义,我发现:

  • 分辨率:屏幕上的物理像素总数

  • 密度:基于屏幕分辨率,像素在屏幕物理宽度和高度上的分布。

我怎样才能更好地理解这两个定义之间的区别?

【问题讨论】:

  • 这是一篇关于屏幕密度的维基百科文章:en.wikipedia.org/wiki/Pixel_density
  • 将密度视为每英寸像素
  • 屏幕分辨率:屏幕包含水平和垂直的像素数,例如320x480。屏幕密度:它们之间的距离,通常以每英寸点数 (DPI) 表示。

标签: android android-resolution


【解决方案1】:

分辨率是衡量显示器一次可以显示多少像素的指标,例如。 640x480。密度是衡量每个像素在实际单位中的大小。这与屏幕尺寸密切相关,例如。 15 英寸显示屏上的 640x480。

在比较一台设备与另一台设备的分辨率时,这是一个直接的比较:分辨率越高,您一次可以显示的信息就越多。比较密度时:密度越高,显示越清晰。

如果您有高分辨率和低密度,那么您的屏幕将非常大。另一方面,低分辨率和高密度会导致屏幕非常小。

【讨论】:

  • @committedandroider 表示可以显示更多像素,因为分辨率与设备可以显示的物理像素数直接相关。
【解决方案2】:

分辨率是关于你可以在屏幕上显示多少像素。

密度取决于您的设备实际尺寸,如果它很小且分辨率更高,则密度较高会导致您在较小的物理空间中显示更多像素。

【讨论】:

    【解决方案3】:

    基本上:

    1. 分辨率涉及绝对个像素数。 (查看维基百科Image Resolution
    2. 密度(又名每英寸像素 - PPI)涉及每英寸的相对像素数。 (查看维基百科Pixel Density

    保重, 贝科

    【讨论】:

      【解决方案4】:

      最佳实践


      支持多屏幕的目的是创建一个可以在 Android 支持的任何通用屏幕配置上正常运行并看起来不错的应用程序。本文档的前面部分提供了有关 Android 如何使您的应用程序适应屏幕配置以及如何自定义应用程序在不同屏幕配置上的外观的信息。本节提供了一些额外的提示和技术概述,可帮助确保您的应用程序针对不同的屏幕配置正确扩展。

      以下是一份快速清单,说明如何确保您的应用程序在不同的屏幕上正确显示: 1.在 XML 布局文件中指定尺寸时使用 wrap_content、fill_parent 或 dp 单位 2.不要在你的应用程序代码中使用硬编码的像素值 3.不要使用AbsoluteLayout(已弃用) 4.为不同的屏幕密度提供替代的位图drawables

      以下部分提供了更多详细信息。

      1. 使用 wrap_content、fill_parent 或 dp 单位作为布局尺寸

      在 XML 布局文件中为视图定义 android:layout_width 和 android:layout_height 时,使用“wrap_content”、“fill_parent”或 dp 单位可确保视图在当前设备屏幕上具有适当的大小。

      例如,layout_width="100dp" 的视图在中等密度屏幕上测量为 100 像素宽,而系统在高密度屏幕上将其缩放至 150 像素宽,因此视图占用的物理空间大致相同在屏幕上。

      同样,您应该更喜欢 sp(与比例无关的像素)来定义文本大小。 sp 缩放因子取决于用户设置,系统缩放大小与 dp 相同。

      1. 不要在应用程序代码中使用硬编码的像素值

      出于性能原因和代码更简单,Android 系统使用像素作为标准单位来表示尺寸或坐标值。这意味着视图的尺寸始终在代码中使用像素表示,但始终基于当前屏幕密度。例如,如果 myView.getWidth() 返回 10,则视图在当前屏幕上是 10 像素宽,但在具有更高屏幕密度的设备上,返回的值可能是 15。如果您在应用程序代码中使用像素值使用未针对当前屏幕密度进行预缩放的位图时,您可能需要缩放代码中使用的像素值以匹配未缩放的位图源。

      如果您的应用程序在运行时操作位图或处理像素值,请参阅下面有关其他密度注意事项的部分。

      1. 不要使用 AbsoluteLayout

      与其他布局小部件不同,AbsoluteLayout 强制使用固定位置来布置其子视图,这很容易导致用户界面在不同的显示器上无法正常工作。因此,AbsoluteLayout 在 Android 1.5(API 级别 3)中已被弃用。

      您应该改用RelativeLayout,它使用相对定位来布置其子视图。例如,您可以指定按钮小部件应出现在文本小部件的“右侧”。

      1. 使用特定于大小和密度的资源

      虽然系统会根据当前屏幕配置缩放您的布局和可绘制资源,但您可能希望在不同的屏幕尺寸上调整 UI,并提供针对不同密度优化的位图可绘制资源。这基本上重申了本文档前面的信息。

      如果您需要准确控制应用程序在各种屏幕配置上的外观,请在配置特定的资源目录中调整布局和位图可绘制对象。例如,考虑要在中高密度屏幕上显示的图标。只需创建两种不同尺寸的图标(例如 100x100 用于中等密度,150x150 用于高密度)并使用适当的限定符将这两种变体放在适当的目录中: res/drawable-mdpi/icon.png //用于中密度屏幕res/drawable-hdpi/icon.png //用于高密度屏幕

      【讨论】:

      【解决方案5】:

      分辨率是设备上每个维度(宽×高)中可以显示在屏幕上的像素数。

      例如,分辨率为“1024 × 768”的设备,其宽度为 1024 像素,高度为 768 像素。

      像素密度通常以 PPI(每英寸像素数)衡量,它指的是显示屏上每英寸显示的像素数。更高的每英寸像素密度可以在使用设备时提供更高的清晰度和清晰度。

      例如,如果设备屏幕被称为“100 PPI”,则意味着它每英寸有 100 个心理像素。

      Reference

      【讨论】:

        【解决方案6】:

        分辨率 => Cp * Rp(COLUMN 中的像素数和 RAW 中的像素数)

        密度 => Np / 1 英寸(每英寸像素数)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多