Android分辨率处理方案


像素(Pixel = picture element):

像素Pixel)是由 Picture(图像) Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,如同摄影的相片一样,数码影像也具有连续性的浓淡阶调,我们若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位像素Pixel)。这种最小的图形的单元能在屏幕上显示通常是单个的染色点。越高位的像素,其拥有的色板也就越丰富,越能表达颜色的真实感。

点有时用来表示像素,特别是计算机市场营销人员,因此ppi有时缩写为DPI(dots per inch)。用来表示一幅图像的像素越多,结果更接近原始的图像。一幅图像中的像素个数有时被称为图像解析度,虽然解析度有一个更为特定的定义。

像素可以用一个数表示,譬如一个"0.3兆像素" 数码相机,它有额定三十万像素,或者用一对数字表示,例如“640480显示器,它有横向640像素和纵向480像素(就像VGA显示器那样),因此其总数为640 × 480 = 307,200像素。数字化图像的彩色采样点(例如网页中常用的JPG文件)也称为像素。取决于计算机显示器,这些可能不是和屏幕像素有一一对应的。在这种区别很明显的区域,图像文件中的点更接近纹理元素。在计算机编程中,像素组成的图像叫位图或者光栅图像。

密度(Density):

度量像素往往使用PPI(每英寸像素)或者DPI(每英寸点阵),当英寸数量是固定的情况下,往往使用密度来度量像素的排列控件,密度越高像素在一英寸的中的密集度就越高。

密度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕通常则会有很多——甚至会非常非常多——像素排列在同一区域。屏幕的密度是非常重要的,举个例子,长宽以像素为单位定义的界面元素(比如一个按钮),在低密度的屏幕上会显得很大,但在高密度的屏幕上则会显得很小。

Android常用像素与密度定义:

低密度(120),ldpi

中密度(160),mdpi

高密度(240),hdpi

小屏幕

QVGA240×320),2.63.0

普通屏幕

·WQVGA240×400),3.23.5
·FWQVGA240×432),3.53.8

·HVGA320×480),3.03.5

·WVGA480×800),3.34.0
·FWVGA480×854),3.54.0

大屏幕

·WVGA480×800),4.85.5
·FWVGA480×854),5.05.8

例如:QVGA的标准像素为240px(横向)×320px(纵向)一般使用2.6-3.0英寸的屏幕

这个度量单位是指:以屏幕的对角线长度作为依据的长度。这样就可以知道实际的像素密度:平均每英寸包含120个像素。

Android常用单位:

密度无关的像素(DIP

指一个抽象意义上的像素,程序用它来定义界面元素。它作为一个与实际密度无关的单位,帮助程序员构建一个布局方案(界面元素的宽度,高度,位置)。
一个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为160DPI的屏幕上的像素是一致的,这也是Android平台所假定的默认显示设备。在运行的时候,平台会以目标屏幕的密度作为基准,“透明地”处理所有需要的DIP缩放操作。要把密度无关像素转换为屏幕像素,可以用这样一个简单的公式:pixels = dips * (density / 160)。举个例子,在DPI240的屏幕上,1DIP等于1.5个物理像素。我们强烈推荐你用DIP来定义你程序的界面布局,因为这样可以保证你的UI在各种分辨率的屏幕上都可以正常显示。

从理论上看,Android解决方案适合任何像素密度。为方便起见,Google制定出一些主 要计数单位:规定1ldpi=120dpi1mdpi=160 dpi1hdpi=240 dpi1xhdpi=320 dpi。为推动这一方案,Google力劝软件人员为不同DPI显示屏提供资源,确保其应用在任一款设备上看起来更漂亮。

因此我们强烈建议大家在布局控件时,使用DPDIP)为单位,它能保证组件在不同分辨率中合理显示。

刻度像素(SP=Scaled Pixel):

将尺寸定义成该单位,字体会随着用户字体设置的改变而改变。

 

Google建议为不同的分辨率设置不同的图像资源和布局文件。

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

相关内容