Android中的长度单位详解
http://blog.csdn.net/zuolongsnail/article/details/6397768
in(英寸)長度單位(基本用不到)
mm(毫米)長度單位(基本用不到)
pt(point磅)1/72英寸,標(biāo)準(zhǔn)的長度單位(基本用不到)
?
px(pixel像素)指的是屏幕上的點(diǎn)
dp(與密度無關(guān)的像素)一種基于屏幕密度的抽象單位。在每英寸160點(diǎn)的顯示器上,1dp=1px
dip(device independent pixels設(shè)備獨(dú)立像素) 不同設(shè)備有不同的顯示效果,這個(gè)和設(shè)備硬件有關(guān)。
sp(scaled pixels放大像素)與dp類似,主要用于字體顯示(best for textsize)
?
dip和px的區(qū)別及其轉(zhuǎn)換
區(qū)別:
在DisplayMetrics.densityDpi=160的設(shè)備上,DisplayMetrics.density是等于1.0的(通過查看DisplayMetrics的SDK源代碼得知),此時(shí)1dip=1px。但是換到其他不同density的設(shè)備上,dip和px的大小就不一樣了,px在任何密度的設(shè)備上幾何長度都是一樣的,而dip會(huì)根據(jù)設(shè)備密度變化的。所以在開發(fā)中布局時(shí)盡量使用dip而少使用px。dpi表示每英寸像素?cái)?shù),讀者可以參考這篇文章:(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的區(qū)別以及聯(lián)系。
轉(zhuǎn)換:
dip和px之間的轉(zhuǎn)換很簡單,下面是dip和px的工具類。
[java]?view plaincopy
- Screen size (屏幕尺寸):具體的屏幕物理長度,以對(duì)角線長度做為標(biāo)識(shí),平時(shí)我們說的3”屏,7”屏就是指這個(gè),是物理尺寸
- Resolution (分辨率):屏幕上總共的物理像素點(diǎn),雖然經(jīng)常被以800X600之類的來描述,但是在android中,他并不指代具體的屏幕寬高比例,注意,分辨率和屏幕大小沒有任何聯(lián)系,分辨率只是描述點(diǎn)的而已,所以相同分辨率下,屏幕越小,越清晰
- density(密度) :表示每英寸有多少個(gè)顯示點(diǎn),density是以分辨率為基礎(chǔ),即指在固定分辨率上散開的像素點(diǎn),也即是說屏幕的density越大,單位上分散的像素就越多,可以理解為點(diǎn)距就越小,這樣如果某個(gè)元素是以px為單位的,那么在低密度的屏幕上就會(huì)變大,應(yīng)用程序可以通過指定high-dpi等三種資源來實(shí)現(xiàn)平臺(tái)的獨(dú)立性
- 另外和android平臺(tái)相關(guān)的還有的概念:
- ASPECT RATIO (寬高比例):也就是平時(shí)我們說的4比3之流
- Density-independent pixel(dip):dip是一種虛擬的像素單位,專門用來給程序定義UI用,Android高度推薦使用這個(gè),可以為不同的dip設(shè)置不同的資源進(jìn)行自動(dòng)切換 pixels = dips * (density / 160)即dip相當(dāng)于屏幕density=160時(shí)的一個(gè)像素點(diǎn),density=160時(shí)是一個(gè)點(diǎn)顯示一個(gè)像素,而density=240時(shí)是3個(gè)點(diǎn)顯示兩個(gè)像素,圖像看起來大一些,真實(shí)像素只有1280*2/3px,800*2/3px。
- (同一寬度(2英寸)的屏幕,但是一個(gè)像素?cái)?shù)是360,density = 160,另一個(gè)屏幕的像素是720,density=360;如果要畫160dip的線條,對(duì)于第一個(gè)屏幕就是劃了160個(gè)像素,占屏幕一般,第二個(gè)屏幕就是劃了320個(gè)像素,也占屏幕的一半)
- Dot per inch(DPI) : 就是一英寸上顯示的點(diǎn),而這個(gè)點(diǎn)并不是意義上的像素。 一般來說,顯示器是96DPI,也就是說96像素等于1inch,但實(shí)際上不應(yīng)該是這樣,因?yàn)轱@示器的分辨率可以調(diào)整。 對(duì)于你上面所說的顯示器設(shè)置,96DPI可以理解為用96象素來表示一英寸,而變成120DPI的時(shí)候,是用120像素來表示一英寸,而系統(tǒng)的對(duì)象(字體,圖像)的是用英寸數(shù)來表示的,所以120DPI時(shí),圖象和字體就變大了。
就是一英寸上顯示的點(diǎn),而這個(gè)點(diǎn)并不是意義上的像素。?一般來說,顯示器是96DPI,也就是說96像素等于1inch,但實(shí)際上不應(yīng)該是這樣,因?yàn)轱@示器的分辨率可以調(diào)整。
對(duì)于你上面所說的顯示器設(shè)置,96DPI可以理解為用96象素來表示一英寸,而變成120DPI的時(shí)候,是用120像素來表示一英寸,而系統(tǒng)的對(duì)象(字體,圖像)的是用英寸數(shù)來表示的,所以120DPI時(shí),圖象和字體就變大了。 - 色階 :也就是平時(shí)我們說的 65536色,26萬色,1600萬色并沒有數(shù)字看起來差別那么大,這實(shí)際上只是表示相鄰的三個(gè)色階而已,當(dāng)然,1600萬色顯示效果是最好的
總結(jié)
以上是生活随笔為你收集整理的Android中的长度单位详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巧用linux服务器下的/dev/shm
- 下一篇: 什么才是多线程安全的