科普dip,dp,sp,dpi,ppi,px,Density
一、概念
DPI:DPI是Dots Per Inch的縮寫,也就是“每英寸點(diǎn)數(shù)”,打印機(jī)分辨率。這里所說的“點(diǎn)”,在屏幕上并不是不變的,并不是唯一對(duì)應(yīng)屏幕上的像素點(diǎn),而是受到分辨率等因素的影響。這個(gè)點(diǎn)有可能是1個(gè)像素,也有可能是多個(gè)像素。一般是用于打印機(jī)的
PPI:是 Pixel per inch,每英寸像素?cái)?shù),圖片分辨率。PPI越高圖片越細(xì)膩。
DIP:DIP是指Density Independent Pixels,可以翻譯為密度無關(guān)像素。和px相比,dip在不同密度的屏幕中實(shí)際顯示比例將保持一致。根據(jù)規(guī)定,一個(gè)dp相當(dāng)于160dpi屏幕中的一個(gè)px。在320dpi的屏幕中,一個(gè)dp相當(dāng)于2個(gè)px。
dp:等于dip。在Android開界面布局文件時(shí),dp是長度單位。
sp:scaled pixels(放大像素),與dp相似. 主要用于字體顯示best for textsize。
px: pixels(像素). 不同設(shè)備顯示效果相同,一般我們HVGA代表320x480像素,這個(gè)用的比較多。顯示的風(fēng)格不同,就像網(wǎng)頁,在1280*800 中顯示正常。1024*768 中顯示亂掉。
二、Android中對(duì)Density的特別設(shè)計(jì)
為了適配不同android設(shè)備的屏幕尺寸,Android對(duì)屏幕密度做了重新的規(guī)定,將密度Density與屏幕分辨率綁定起來,給了固定的值。
| 屏幕 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默認(rèn)的low=120 ;Medium =160; High = 240 | |||
三、Android中的計(jì)算關(guān)系
在android源碼包TypedValue.java中,我們看如下函數(shù):
該函數(shù)功能:是把各單位換算為像素。
DENSITY:密度的意思
metrics.density:默認(rèn)值為DENSITY_DEVICE / (float) DENSITY_DEFAULT;
metrics.scaledDensity:默認(rèn)值為DENSITY_DEVICE / (float) DENSITY_DEFAULT;
metrics.xdpi:默認(rèn)值為DENSITY_DEVICE;
DENSITY_DEVICE:為屏幕密度
DENSITY_DEFAULT:默認(rèn)值為160
---------------------------------------------
從Android的源碼得知:
像素=dp*(屏幕密度/160)
則
dp=160*像素/屏幕密度
從上表可知Android規(guī)定分辨率320x480 的A屏幕密度為160dpi,分辨率480*800的B屏幕密度為240dpi
A:寬,dp=160*320/160=320
B:寬,db=160*480/240=320
由此可見,Android里用dp單位,1dp在320*480和480*800的分辨率的屏幕下是一樣的,顯示效果是一樣的
總結(jié)
以上是生活随笔為你收集整理的科普dip,dp,sp,dpi,ppi,px,Density的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle实例与数据库
- 下一篇: html 提交后跳转页面,html 提交