安卓:分辨率和密度之间有什么区别?

24

根据 Android 的定义,我发现:

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

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

我该如何更好地理解这两个定义之间的差异?


1
这是一个关于屏幕密度的维基百科文章链接:http://en.wikipedia.org/wiki/Pixel_density - CommonsWare
1
把密度想象成每英寸像素数。 - Will Tate
屏幕分辨率:指屏幕水平和垂直方向上所包含的像素数量,例如320x480。屏幕密度:是指像素之间的距离,通常用每英寸点数(DPI)表示。 - Yousha Aleayoub
6个回答

44

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

当将一个设备的分辨率与另一个设备相比较时,这是一个直接的比较:分辨率越高,您可以同时显示更多信息。而当比较密度时:密度越高,显示器看起来就越清晰。

如果您的分辨率很高但密度很低,则您的屏幕会非常大。另一方面,低分辨率和高密度会导致非常小的屏幕。


@committedandroider 所说的信息是指更多的像素可以显示,因为分辨率直接关系到设备能够显示的物理像素数量。 - gaurav jain

34

分辨率是指屏幕上可以显示多少像素。

密度取决于设备的真实尺寸,如果它很小但分辨率较高,则密度就很高,因为在较小的物理空间内显示更多的像素。


9

基本上:

  1. 分辨率 涉及绝对像素数量。(请参阅维基百科图像分辨率)
  2. 密度 (又称每英寸像素 - PPI) 涉及每英寸相对像素数量。(请参阅维基百科像素密度)

保重, Beco


2

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

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

像素密度通常用PPI(每英寸像素数)来衡量,它指的是显示屏上每英寸出现的像素数量。每英寸更高的像素密度可使设备使用时更加清晰锐利。

例如,如果一个设备屏幕被称为“100 PPI”,那么它就意味着其每英寸有100个物理像素。

参考资料


2

最佳实践


支持多个屏幕的目标是创建一个可以在Android支持的任何常规屏幕配置上正常运行并且外观良好的应用程序。本文档的前几节提供了有关Android如何适应您的应用程序屏幕配置以及如何自定义不同屏幕配置下应用程序外观的信息。这一节提供了一些额外的技巧和概述,帮助确保您的应用程序能够在不同的屏幕配置下正确地缩放。

以下是有关如何确保您的应用程序在不同屏幕上正常显示的快速检查列表: 1. 在XML布局文件中指定尺寸时,请使用wrap_content、fill_parent或dp单位。 2. 不要在应用程序代码中使用硬编码的像素值。 3. 不要使用AbsoluteLayout(它已被弃用)。 4. 为不同屏幕密度提供备用位图可绘制项。

接下来的几节提供了更多详细信息。

  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 Level 3)中已被弃用。

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

  1. 使用特定大小和密度的资源
尽管系统会根据当前屏幕配置对布局和可绘制资源进行缩放,但您可能希望在不同的屏幕尺寸上进行UI调整,并提供针对不同密度进行优化的位图可绘制资源。这基本上重申了本文档中早期的信息。
如果您需要精确控制应用程序在各种屏幕配置上的外观,请在特定于配置的资源目录中调整布局和位图可绘制资源。例如,考虑一个您想要显示在中等和高密度屏幕上的图标。只需创建两个不同大小的图标(例如100x100用于中等密度和150x150用于高密度),并将这两个变体放入适当的目录中,使用正确的限定符: res/drawable-mdpi/icon.png // 用于中等密度屏幕 res/drawable-hdpi/icon.png // 用于高密度屏幕

请参考以下链接:http://developer.android.com/guide/practices/screens_support.html#screen-independence - Nagappa L M

2

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

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


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