簡單談談Android中SP與DP的區別_Android

來源:互聯網
上載者:User

從一開始寫Android程式,就被告知這些常識

一、dp(或者dip device independent pixels)

一種基於螢幕密度的抽象單位。在每英寸160點的顯示器上,1dp=1px。不同裝置有不同的顯示效果,這個和裝置硬體有關。

二、sp(Scaled Pixels)

主要用於字型顯示,與刻度無關的一種像素,與dp類似,但是可以根據使用者的字型大小喜好設定進行縮放。

簡單的說

  • 長度寬度的數值要使用dp作為單位放入dimens.xml檔案中
  • 字型大小的數值要使用sp作為單位,也放入dimens.xml檔案中

然後,就沒有然後了,彷彿潛台詞就是說,你記住去用就行了.

偶然有一天,當我們陰差陽錯地將字型寫成了dp,也是可以工作,而且效果和sp一樣.

這時候,就開始懷疑了,到底有啥區別呢,dp和sp有什麼不同呢?

我們做個簡單的Sample驗證一下,如下,一個布局代碼

<TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textSize="18sp"    android:text="Hello World! in SP" /><TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:textSize="18dp"    android:text="Hello World! in DP"    />

得到的效果是這個樣子

但是,當我們進入系統設定中修改字型大小時

再次進入之前的介面,發現了一些不一樣的東西.

由此看來

  • 使用sp作為字型大小單位,會隨著系統的字型大小改變
  • 而dp作為單位則不會.

關於sp, 文檔 的描述為:

Scale-independent Pixels – This is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.

大致意思為

  • sp除了受螢幕密度影響外,還受到使用者的字型大小影響
  • 通常情況下,建議使用sp來跟隨使用者字型大小設定

因此通常情況下,我們還是建議使用sp作為字型的單位,除非一些特殊的情況,不想跟隨系統字型變化的,可以使用dp.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.