Android開發中佈局與元件(一)—— 螢幕尺寸單位dp,px,sp的探究
阿新 • • 發佈:2019-01-04
在Android開發中,常用的尺寸單位有 dp
, px
, sp
。當然還有其他的單位如 pt
, mm
等,不過這些都是不常用,所以我們重點來探究一下 dp
, px
, sp
這三個常用的單位。
- px
英文pixel
的縮寫,即畫素。無論螢幕密度為多少,一個畫素單位對應螢幕上的一個畫素,因此在android開發中
並不推薦使用px
為單位,因為它在不同解析度的螢幕上顯示的效果差別很大。 - dp(或dip)
英文density-independent pixel
的縮寫,意思為密度無關畫素,可以把它理解為一個物理尺寸,即不管在什麼分變率的螢幕上表現出的大小都是一致的,所以在設定檢視尺寸的時候,推薦以dp
- sp 英文
scale-independent pixel
的縮寫,意思是與縮放無關的畫素。它也是一種與密度無關的畫素。通常使用sp
作為字型大小的單位。
瞭解了這三種的單位的不同,我們來看看在實際應用中它們的效果:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width ="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Text size is 30px"
android:textSize="30px"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Text size is 30dp"
android:textSize="30dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Text size is 30sp"
android:textSize="30sp"/>
</LinearLayout>
在上面的程式碼中我們定義了三個分別使用不同單位的 TextView
,我們來看看在不同解析度下它們的表現如何:
由上圖可見, 以 dp
為單位的字型,無論在什麼情況下表現的大小都相同,以 px
為單位的字型在不同解析度下表現的大小不同,在高解析度的螢幕上表現的更小一些,在低解析度的螢幕上表現的更大一些。以 sp
為單位的字型只會隨系統設定中字型的大小做一定的改變,而與螢幕的解析度也沒有關係。
希望可以幫到對尺寸的單位有疑惑的朋友。