Android不同分辨率图片实际显示大小的计算

 由于市场上Android手机种类繁多,Android应用多分辨率适配工作必不可少。

一般来说,屏幕分配分为,屏幕尺寸,屏幕方向,屏幕像素密度。

(1)屏幕尺寸

屏幕尺寸是根据屏幕大小进行匹配,例如small,normal,large,xlarge等等这一类匹配目前已经很少使用。

(2)屏幕方向

屏幕方向分为port竖屏和land横屏两种,通常开发时如果支持横屏显示,都会另写一套横向的布局文件。

(3)屏幕像素密度

屏幕像素密度指单位长度屏幕显示的像素,即常说的dpi(dots per inch),每英寸点数。密度越高显示画面就越清晰。

Android根据像素密度按区间范围分成几种:

 

密度区间 ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi
dpi 120 160 240 320 480 640
1dp对应像素数 0.75 1.0 1.5 2.0 3.0 4.0

 

当新建一个Android工程时,在res目录下可以看到drawable-xxx目录,就是对应不同像素密度的资源。系统会优先从该目录中寻找图片,如果找不到会从其他目录寻找。因此对应不同密度设备,我们需要为其准备不同画质的图片,以便获得更好的效果。

 

Android将mdpi像素作为基准线进行匹配,dp与px的换算关系如下,


px= dp * (dpi / 160 )


官方建议使用dp作为布局单位,这样不同的dpi设备上,换算出来的px也会相应的自适应。

为了更清楚地看清不同dpi机型上的px的换算规律,做了以下实验。

 

测试机型:

(1)   320dpi机型 A

(2)   160dpi机型 B

测试图片:

一张48×48的图片分别存放在drawable,drawable-mdpi,drawable-hdpi目录下,图片名称分别为

test1.png,test2.png,test3.png。


实验结果:

机型A上面显示效果,

test1.png 显示大小为 96×96像素

test2.png 显示大小为 96×96像素

test3.png 显示大小为 64×64像素

机型B上面显示效果,

test1.png 显示大小为 48×48像素

test2.png 显示大小为 48×48像素

test3.png 显示大小为 32×32像素


实验结论:

通过如上实验,我们知道一张图片实际显示大小与机型dpi和drawable文件夹dpi均相关。

 

手机显示像素 =  图片实际像素尺寸 × 机型DPI / 所在资源目录DPI


例如,在320dpi的机型上,将48×48像素的图片放入drawable-hdpi目录,该图片实际显示像素 = 48* 320/ 240 = 64像素。

所以为了获得更好的显示效果,每种dpi分辨率的机型,均需要搭配一张对应尺寸图片,以防止被缩小或者拉大。

 

 


你可能感兴趣的:(Android,UI)