android中的長度單位,dip、dp、px、sp及擷取螢幕解析度和密度

來源:互聯網
上載者:User

標籤:android   style   class   blog   code   http   

本文主要講的是android中長度單位(dp、px、sp)的用法。

 

1、px:pixels(像素)
(1)、不同的裝置不同的顯示屏顯示效果是相同的
(2)、這是絕對像素,是多少就永遠是多少不會改變。
一般我們形容螢幕的解析度,例如解析度800*480,實際表示改手機螢幕在高度上有800個像素,寬度上有400個像素,整個螢幕就是由800*480個像素點組成。但是由於我們的螢幕大小是不一樣的,就會導致同樣解析度在不同尺寸的螢幕上表現不同,同解析度下,尺寸越小的螢幕上每英寸上分布的像素點就越多,即解析度越高,螢幕越清晰。

 

2、dpi:dpi(dots per inch)

表示的是每英尺的點(像素)數
我們平常說的手機螢幕的大小比如4.5英寸,指的是螢幕對角線的長度是4.5英寸,那麼我們的dpi的計算公式就是:
dpi(dots per inch)= /size
dpi表示的是每英尺的像素,dpi越高,說明螢幕細粒度越高,也就越清晰了

 

3、dp:dp(Device Independent pixels)

很簡單,和dip是一樣的。
dp和px的換算公式:px=dp*(dpi/160)

例:在大小相同的2塊螢幕上,假設解析度分別為480*320、960*640,計算出480*320的dpi為160,假設螢幕上有一個TextView控制項,分別設定其長(layout_weight)為160px、160dp,則畫出二者的表現。

分析過程:
因為螢幕尺寸相同,解析度分別為480*320、960*640,其中480*320的dpi為160,則另一塊屏的dpi為320,計算結果如所示:

 

當螢幕上有一個TextView控制項,分別設定其長(layout_weight)為160px、160dp,則畫出二者的表現

 

原理:
第一塊螢幕的dpi是 dpi=160,第二塊螢幕的 dpi=320 ,如果套用上面的 dp和px 轉化公式就可以得到:
解析度為480*320的螢幕,這個控制項的的 px 為:160px=160dp*(160/160),也就是160px,佔了螢幕一半
160dp=160px
160px=160px
解析度為960*640的螢幕,這個空間的 px 為:320px=160dp*(320/160),也就是320px,也是佔了螢幕的一半
160dp=320px
160px=160px
這樣我們的應用程式就可以在不同的解析度上展現的效果相同了。

ps:當要設定控制項寬度或者是高度的大小的時候,要使用的單位是 dp ,而不要使用 px。

 

4、sp:sp(scaled pixels)
sp這個單位通常我們用來設定字型的大小
如果我們改變了系統的字型大小,其控制項的顯示大小也會跟著發生變化。

 

5、擷取螢幕解析度和密度

1 DisplayMetrics displayMetrics = new DisplayMetrics();2 getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);3 System.out.println("width : " + displayMetrics.widthPixels + "   height : " + displayMetrics.heightPixels + "   density : " + displayMetrics.density);

最終在Logcat中我們可以看到width、height、density的值

 

當density=1,則1dp=1px;

當density=2,則1dp=2px;

當density=3,則1dp=3px;

 

apk的資源套件中,
當螢幕density=240時,即1dp=1.5px,使用hdpi標籤的資源
當螢幕density=160時,即1dp=1px,使用mdpi標籤的資源
當螢幕density=120時,即1dp=0.75px,使用ldpi標籤的資源。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.