【Android开发】Android中的长度单位详解及使用建议
2012-12-12 19:17
225 查看
Android中布局的单位很多,如:(dp、sp、px、in、pt、mm) 但是他们之间有什么区别了?又该在什么时候使用了?我想即使是很有经验的开发者有时也会不明白吧。
dpi(dot per inch):用来描述屏幕密度,如:屏幕密度为160则意味着每1英寸上有160个显示点。
in(inch):表示英寸,是屏幕的物理尺寸。每英寸等于2.54
厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2 英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128 厘米。
mm:表示毫米,是屏幕的物理尺寸。
pt:表示一个点,是屏幕的物理尺寸。pt全称为point,但中文不叫“点”,查英语字典可以看到,确切的说法是一个专用的印刷单位“磅”,大小为1/72英寸。所以它是一个自然界标准的长度单位,也称为“绝对长度”。1in
= 2.54cm = 25.4 mm = 72pt = 6pc。
px(pixel):表示屏幕实际的象素。例如,320*480
的屏幕在横向有320个象素,在纵向有480 个象素。如果使用px 作单位,假设屏幕大小不变(还是3.2 寸),屏幕初始密度为160,而现在屏幕密度变成了320。那么原来TextView 的宽度设成160px,在密度为320 的3.2
寸屏幕里看要比在密度为160 的3.2 寸屏幕上看短了一半。
dip或dp:(device
independent pixels,设备独立像素),一般为了支持WVGA、HVGA和QVGA使用这个,不依赖像素。这里要特别注意dip与屏幕密度dpi有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致屏幕密度dpi不能正常显示。在屏幕密度dpi为160的显示屏上,1dip=1px,有时候可能你的屏幕分辨率很大如480*800,但是dpi 没有正确设置比如说还是160,那么这个时候凡是使用dip的都会显示异常,基本都是显示过小。dip的换算:1dip
= 1px*scaledDensity。
sp(Scaled Pixels):主要用于字体显示,与刻度无关的一种像素,与dp类似,但是可以根据用户的字体大小首选项进行缩放。在dpi为160的设备上,1sp=1px;在dpi不为160的设备上,1sp=1px*(current
DPI)/160。
为了使用户界面能够在现在和将来的显示器类型上正常显示,建议大家始终使用sp作为文字大小的单位,将dip作为其他元素的的单位。
dpi(dot per inch):用来描述屏幕密度,如:屏幕密度为160则意味着每1英寸上有160个显示点。
in(inch):表示英寸,是屏幕的物理尺寸。每英寸等于2.54
厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2 英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128 厘米。
mm:表示毫米,是屏幕的物理尺寸。
pt:表示一个点,是屏幕的物理尺寸。pt全称为point,但中文不叫“点”,查英语字典可以看到,确切的说法是一个专用的印刷单位“磅”,大小为1/72英寸。所以它是一个自然界标准的长度单位,也称为“绝对长度”。1in
= 2.54cm = 25.4 mm = 72pt = 6pc。
px(pixel):表示屏幕实际的象素。例如,320*480
的屏幕在横向有320个象素,在纵向有480 个象素。如果使用px 作单位,假设屏幕大小不变(还是3.2 寸),屏幕初始密度为160,而现在屏幕密度变成了320。那么原来TextView 的宽度设成160px,在密度为320 的3.2
寸屏幕里看要比在密度为160 的3.2 寸屏幕上看短了一半。
dip或dp:(device
independent pixels,设备独立像素),一般为了支持WVGA、HVGA和QVGA使用这个,不依赖像素。这里要特别注意dip与屏幕密度dpi有关,而屏幕密度又与具体的硬件有关,硬件设置不正确,有可能导致屏幕密度dpi不能正常显示。在屏幕密度dpi为160的显示屏上,1dip=1px,有时候可能你的屏幕分辨率很大如480*800,但是dpi 没有正确设置比如说还是160,那么这个时候凡是使用dip的都会显示异常,基本都是显示过小。dip的换算:1dip
= 1px*scaledDensity。
sp(Scaled Pixels):主要用于字体显示,与刻度无关的一种像素,与dp类似,但是可以根据用户的字体大小首选项进行缩放。在dpi为160的设备上,1sp=1px;在dpi不为160的设备上,1sp=1px*(current
DPI)/160。
为了使用户界面能够在现在和将来的显示器类型上正常显示,建议大家始终使用sp作为文字大小的单位,将dip作为其他元素的的单位。
相关文章推荐
- 【Android开发】TextSwitcher 使用详解
- Android应用开发 推送理解析极光推送使用详解
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发详解
- 详解Android开发中硬件加速支持的使用方法
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中的长度单位详解
- Android 软件开发之如何使用Eclipse Debug调试程序详解
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- Android开发之SoundPool使用详解
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- Android开发之Path类使用详解,自绘各种各样的图形!
- Android 软件开发之如何使用Eclipse Debug调试程序详解及Eclipse常用快捷键(转)
- Android 最火的快速开发框架AndroidAnnotations使用详解
- Android--应用开发之所有动画使用详解
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- android 使用mupdf开源开发pdf详解
- Android开发之CoordinatorLayout使用详解二(图解)
- 【转】【Android UI设计与开发】之详解ActionBar的使用,androidactionbar