首页 > 代码库 > Android面试题1:尺寸单位解析

Android面试题1:尺寸单位解析

昨天,阿里的电话面试,让我发现好多不足,好多微小的知识点平时都没怎么关注,好吧,第一篇blog来分析下android中各种尺寸单位。

面试题1:

“Android中很多尺寸单位有哪些,具体有哪些区别”

 

1.尺寸种类

dip , px , pt ,sp ,dp

dip:(device indepedent pixels) 设备独立的像素(与密度无关,可以随着密度缩放),不同的设备显示不同,它与设备有关,具体与dpi 每英寸点的数量 有关,建议使用dip。

px:(pixels)像素,在不同的设备上显示一样大小,所以对于android设备具有各自不同的大小,分辨率的设备对于布局影响很大,建议不使用px。

pt:(points)磅,它是物理尺寸,1pt=1/72英寸,一般用户印刷业。

sp:(scaled pixels)可放大的像素,与刻度无关,Android中一般字体的大小建议使用sp,在android中 1pt大概等于2.22sp。

dp:与dip相似,如果屏幕密度为160dip(每英寸160个点)1px=1dp。

2.dip与px转换

我们知道dip与屏幕密度无关的像素点,px=dip x 屏幕真实密度/160 。

dip具有自适应屏幕密度,随着屏幕密度改变实际控件的像素大小。因为所以显示最终会转换为px显示。

例如,在density=160dip且屏幕的尺寸不变,1px=1dip.

        如果一个density=160dip,另一个320dip且屏幕大小一样,如果按钮的宽度使用160px,那按钮的大小随着屏幕密度改变,按钮的大小看上去在高密度下是原来密度下的一半,无法完成自适应性。

        如果一个density=160dip,另一个320dip且屏幕大小一样,如果按钮的宽度使用160dip,那按钮的大小不随着屏幕密度改变,跟原来实际真实尺寸一致,但高密度下,按钮显示更大细腻。

3.密度density

density(密度)值表示每英寸有多少个显示点,与分辨率是两个概念。与分辨率差别,由于相同的分辨率下,屏幕大小不同,造成密度不同。

物理屏幕上的像素总数。与尺寸类似,也有四种: 低、中、高、超高,android项目工程中对应drawable-四种dip

WVGA 800*480 hdip, VGA 640x480 HVGA 480x320 mdip ,QVAG 320x240 ldip,
注意res/drawable-_dip 目录下不同的分辨率对应不同的drawable,系统会根据系统屏幕不同的分辨率加载不同的drawable.

ldpi: 屏幕密度为120的手机设备
mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px)
hdpi: 屏幕密度为240的手机设备
xhdpi: 屏幕密度为320的手机设备
xxhdpi:屏幕密度为480的手机设备

4.分辨率

分辨率指屏幕上拥有的像素的总数。注意,虽然大部分情况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在Android系统中,程序一般并不直接处理分辨率。