android关于屏幕画图的一些度量单位及概念(sp,dp,px,dpi,density)

来源:互联网 发布:网络淘宝涮单是真的嘛 编辑:程序博客网 时间:2024/05/16 18:03

        对android的布局文件中常常用到的度量单位比较困惑,因此网上了解了一下,根据自己的了解,作如下整理和解释,有一些概念可能解释有误,留作日后改进。

1. 概念解释

(1)px--pixel, 像素,是一个数量单位,屏幕上实际的像素点单位,比如设定一个按钮的长度是100px,屏幕分辨率HVGA代表320×480 pixel。

(2)dpi--dot per inch,(dot是否可以理解为pixel?),是一个密度单位,屏幕像素密度,每英寸像素点的个数。

(3)density--屏幕密度,每英寸有多少个显示点,单位是dpi,dpi数越大,屏幕精细度越大。比如,屏幕密度是160dpi,240dpi。人们在提法上,往往把dpi等同于density,说的屏幕密度,屏幕像素密度往往是指同一个东西。

(4)dp--dip,device independent pixels,设备独立像素,是一个数量单位,与屏幕密度相关,不依赖像素。这个单位是为了在不同的屏幕密度上能够显示同样的大小。

(5)sp--scaled pixels,是一个数量单位,主要处理字体大小。android系统允许用户自定义字体大小(小,正常,大,超大等),当设为正常时,1sp=1dp=1/160=0.00625英寸。

(6)屏幕分辨率:只能说明屏幕总像素,不能说明屏幕精细度。需要综合屏幕分辨率和屏幕物理尺寸才能说明屏幕精细度。但是下面的屏幕名称,代表了这个屏幕的精细度。

  •      VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素;
  •      HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320,density=160 dpi;
  •      QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240,density=120 dpi;
  •      WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素, density=240 dpi;
  •      WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×270,density=120 dpi;

        以上几种屏幕说明屏幕的精细度不同,对于同一种屏幕(比如HVGA的屏幕),它的大小也是指定在一定范围的。

       

屏幕             

宽度          

高度           

尺寸              

大小        

密度      

 Type           

(Pixels)     

(Pixels)   

Range (inches)   

 Size    

Group

QVGA            

240

320

2.6 - 3.0         

Small       

Low

WQVGA         

240

400

3.2 - 3.5        

Normal     

Low

FWQVGA       

240

432

3.5 - 3.8         

Normal     

Low

HVGA             

320

480

3.0 - 3.5         

Normal     

Medium

WVGA           

480

800

3.3 - 4.0         

Normal     

High

FWVGA         

480

854

3.5 - 4.0         

Normal     

High

WVGA           

480

800

4.8 - 5.5          

Large      

Medium

FWVGA         

480

854

5.0 - 5.8         

Large      

Medium

 

2. 概念之间的关系

(1) 屏幕分辨率,density,屏幕物理尺寸大小的关系

      density = pixs/inches(dpi)

      屏幕分辨率是480×320,屏幕物理尺寸是3英寸×2英寸,

      横向像素密度density = 480/3 = 160dpi;

      纵向像素密度density = 320/2 = 160dpi;

      大部分手机横向和纵向像素密度是相等的,因为大部分手机使用的像素点是正方形的。

(2) density,dp与px的关系

      换算公式为pixs = dips * (density /160). 

      比如: 对于density = 240dpi的屏幕,画一个长度20dp,宽度10dp的按钮,

      需要画的长像素数 = 20 * 240 / 160 = 30pixs;

      需要画的宽像素数 = 10 * 240 / 160 = 15pixs;

      还有另一种计算方式,Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),对应的密度比例因子dp/px为0.75,1, 1.5和2。则pixs = dp*a。比如,上面那个屏幕画同样的按钮:

      需要画的长像素数 = 20 * 1.5 = 30pixs;

      需要画的宽像素数 = 10 * 1.5 = 15pixs;

      结论:相同的屏幕尺寸下,无论屏幕密度是多少,用dp表示的按钮的长宽都一样。程序最终都是以pix在屏幕上画出来的。

3. 使用

      在屏幕上最终显示效果的影响因素有:屏幕的物理尺寸,屏幕像素密度dpi,使用何种单位(px,sp,dp等)表示图形的大小。

      不建议使用px,因为同样的100px,在同样尺寸但不同dpi的屏幕上,显示的大小不同。一般来说,文字尺寸用“sp”,非文字尺寸用“dp”。

 

0 0
原创粉丝点击