简述Android单位dp、sp、dip、px、等的区别和使用
来源:互联网 发布:windows激活密匙在哪 编辑:程序博客网 时间:2024/05/19 23:04
废话就不多说了,直接说重点。首先解释下这几个单位的代表意思。
由于过去通常以像素为单位设计计算机用户界面。当一个像素在80x80的时候,在高分辨率显示器上运行该程序,则用户界面会显得很小。所以采用与分辨率无关的度量单位来开发程序就能够解决这个问题。而Android应用开发支持不同的度量单位。
一.解释下:
dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持 WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
dp: dip是一样的
px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
pt:point,是一个标准的长度单位,1pt=1/72英寸=0.035厘米,用于印刷业,非常简单易用;
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。
in(英寸):长度单位。 1英寸=2.54厘米(约);
mm(毫米):长度单位。
当然我们光是了解不会用那就不行了。
二.度量单位的换算公式
在android源码包TypedValue.java中,我们看如下函数:
public static float applyDimension(int unit, float value, DisplayMetrics metrics) {
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}
该函数功能:是把各单位换算为像素。
metrics.density:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;
metrics.scaledDensity:默认值为DENSITY_DEVICE / (float) DENSITY_DEFAULT;
metrics.xdpi:默认值为DENSITY_DEVICE;
DENSITY_DEVICE:为屏幕密度
DENSITY_DEFAULT:默认值为160
然后我们还得了解Android有哪些屏:如下表屏幕
Tyep
宽度
Pixels
高度
Pixels
尺寸
Range(inches)
屏幕密度
QVGA
240
320
2.6-3.0
low
WQVGA
240
400
3.2-3.5
low
FWQVGA
240
432
3.5-3.8
low
HVGA
320
480
3.0-3.5
Medium
WVGA
480
800
3.3-4.0
High
FWVGA
480
854
3.5-4.0
High
WVGA
480
800
4.8-5.5
Medium
FWVGA
480
854
5.0-5.8
Medium
备注
目前android默认的low=120 ;Medium =160; High = 240
px和dip的区别:
px就是像素的意思:1px代表屏幕上一个物理的像素点;所以用像素相当于实际像素画。那么100px的图片不同的手机上就会出现大小不一样。就向100长度的线在200屏幕宽上显示的就是一半,而在300屏幕上就只占用了1/3。
dip与dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后来为了与sp统一就建议使用dp这个名字了。这里就细细解释下dp:它与“像素密度”密切相关,所以首先我们解释一下什么是像素密度?
像素密度:假设手机屏幕分辨率为240x320,屏幕的物理尺寸为1.5英寸x2英寸,(1英寸(in)=2.54厘米(cm)),那么每英寸包含的像素点的数量为240/1.5=160dpi(宽)或320/2=160dpi(高),160dpi就是这部手机的像素密度。
刚才表中已经说明了Android手机分(low=120 ;Medium =160; High = 240,VeryHigh=320)低,中,高,超高四等密度,而他们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。
最后:在大小屏幕相同,分辨率不一样时候(480x320分辨率或者800x480),假设一个80dp长度的图片,换算成240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px,这样使用dp就感觉差别不是很大了。
sp:
与缩放无关的抽象像素(Scale-independent Pixel)。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。
使用建议,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize="16sp"、layout_width="60dp";偶尔需要使用px单位,例如需要在屏幕上画一条细的分隔线时:
欢迎各位留言指点。
- 简述Android单位dp、sp、dip、px、等的区别和使用
- sp、dp、dip、pt、px等单位的区别?【重点】
- Android 中的dip、dp、px、sp等单位的说明
- Android的px,dp和sp等单位的区别
- 关于dip,dp,px,sp等单位的说明和区别
- 关于dip,dp,px,sp等单位的说明和区别
- Android 显示单位px和dip以及sp的区别
- Android 显示单位px和dip以及sp的区别
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- 引用 Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Android上dip、dp、px、sp等单位说明
- Objective-C 文件处理
- js序列化ajax参数对象
- 序列图
- Ubuntu14.04安装与安装后的软件的安装
- binder 分析(2)_client端程序
- 简述Android单位dp、sp、dip、px、等的区别和使用
- Andorid之ListView优化
- 如何直接下载WGS84的无偏移无水印的谷歌卫星地图数据
- 简单配置Apache服务器
- 杭电2041解题报告
- C语言基础学习学习前的准备-1
- 架构很烂,但没人在意
- Gradle脚本基础全攻略
- 认识NIO