根据 Android 的定义,我发现:
分辨率:屏幕上物理像素的总数
密度:基于屏幕分辨率,在屏幕物理宽度和高度上像素的分布情况。
我该如何更好地理解这两个定义之间的差异?
根据 Android 的定义,我发现:
分辨率:屏幕上物理像素的总数
密度:基于屏幕分辨率,在屏幕物理宽度和高度上像素的分布情况。
我该如何更好地理解这两个定义之间的差异?
分辨率是显示器一次可以显示多少像素的度量,例如:640x480。而密度则是实际单位中每个像素有多大的度量。这与屏幕尺寸紧密相关,例如:15英寸显示器上的640x480。
当将一个设备的分辨率与另一个设备相比较时,这是一个直接的比较:分辨率越高,您可以同时显示更多信息。而当比较密度时:密度越高,显示器看起来就越清晰。
如果您的分辨率很高但密度很低,则您的屏幕会非常大。另一方面,低分辨率和高密度会导致非常小的屏幕。
分辨率是指屏幕上可以显示多少像素。
密度取决于设备的真实尺寸,如果它很小但分辨率较高,则密度就很高,因为在较小的物理空间内显示更多的像素。
分辨率是指设备在每个维度(宽度×高度)上可以显示的像素数量。
例如,分辨率为“1024×768”的设备具有1024像素宽度和768像素高度。
像素密度通常用PPI(每英寸像素数)来衡量,它指的是显示屏上每英寸出现的像素数量。每英寸更高的像素密度可使设备使用时更加清晰锐利。
例如,如果一个设备屏幕被称为“100 PPI”,那么它就意味着其每英寸有100个物理像素。
最佳实践
支持多个屏幕的目标是创建一个可以在Android支持的任何常规屏幕配置上正常运行并且外观良好的应用程序。本文档的前几节提供了有关Android如何适应您的应用程序屏幕配置以及如何自定义不同屏幕配置下应用程序外观的信息。这一节提供了一些额外的技巧和概述,帮助确保您的应用程序能够在不同的屏幕配置下正确地缩放。
以下是有关如何确保您的应用程序在不同屏幕上正常显示的快速检查列表: 1. 在XML布局文件中指定尺寸时,请使用wrap_content、fill_parent或dp单位。 2. 不要在应用程序代码中使用硬编码的像素值。 3. 不要使用AbsoluteLayout(它已被弃用)。 4. 为不同屏幕密度提供备用位图可绘制项。
接下来的几节提供了更多详细信息。
在XML布局文件中为视图定义android:layout_width和android:layout_height时,使用“wrap_content”、“fill_parent”或dp单位可保证视图在当前设备屏幕上获得适当的大小。
例如,在中密度屏幕上,具有layout_width="100dp"的视图宽度为100像素,在高密度屏幕上系统将其缩放到150像素宽,以便视图在屏幕上占用大致相同的物理空间。
同样,您应该优先使用sp(比例独立像素)来定义文本大小。sp比例因素取决于用户设置,并且系统将其与dp一样缩放大小。
出于性能和代码简化的原因,Android系统使用像素作为表达尺寸或坐标值的标准单位。这意味着视图的尺寸总是使用像素在代码中表达,但始终基于当前屏幕密度。例如,如果myView.getWidth()返回10,则视图在当前屏幕上的宽度为10像素,但在具有更高密度屏幕的设备上,返回的值可能是15。如果您在应用程序代码中使用像素值来处理未针对当前屏幕密度预缩放的位图,则可能需要缩放您在代码中使用的像素值,以匹配未缩放的位图源。
如果您的应用程序在运行时操作位图或处理像素值,请参见下面有关其他密度考虑的部分。
与其他布局小部件不同,AbsoluteLayout 强制使用固定位置来布置其子视图,这很容易导致用户界面在不同的显示器上无法正常工作。因此,AbsoluteLayout在Android 1.5 (API Level 3)中已被弃用。
您应该改用 RelativeLayout,它使用相对位置来布置其子视图。例如,您可以指定一个按钮小部件应该“出现在”文本小部件的右侧。
分辨率 => Cp * Rp (列中的像素数和行中的像素数)
密度 => Np / 1 英寸(每英寸像素数)