1. 程式人生 > >Android開發中佈局與元件(一)—— 螢幕尺寸單位dp,px,sp的探究

Android開發中佈局與元件(一)—— 螢幕尺寸單位dp,px,sp的探究

在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 為單位的字型只會隨系統設定中字型的大小做一定的改變,而與螢幕的解析度也沒有關係。

希望可以幫到對尺寸的單位有疑惑的朋友。

PS:開發了一個製作個性二維碼的應用,有興趣的朋友可以試一試~ 創意二維碼製作