android dp sp px的區別與聯絡
畫素密度?
螢幕的畫素密度在不同的手機上是不盡相同的。所以需要建立一個獨立於畫素系統的單位來適應不同平臺的手機。
如何計算畫素密度?
pixel density = width(or height) in pixels / width(or height) in inches. 簡化:D = pxs/inches
畫素密度(pixel density)的定義:單位英寸(inches)上的畫素(pixels)數量,稱作畫素密度。畫素密度越高,單位英寸上的畫素就越多。
if D1 > D2 && pxs1 = pxs2, inches1 = pxs1/D1 = pxs2/D1 < pxs2/D2 = inches2 即 inches1 < inches2
即相同畫素的UI元件在高畫素密度的螢幕上顯示較小。
密度的獨立
密度的獨立性表示在不同畫素密度下展示影象的大小一致(物理尺寸一致)。
Density-independent pixels, written as dp(pronounced "dips")
獨立於畫素的密度,稱作dp,能夠適應不同的螢幕,展示統一物理尺寸的UI檢視。
原質化UI設計就是採用此種單位來使用不同的螢幕密度。
安卓裝置上的畫素密度
當開發安卓應用時,若使用dp單位來顯示元件,則能夠在不同密度的螢幕上統一顯示尺寸。
dp = (width in pixels * 160) / screen density;
一個dp與畫素密度等於160的裝置的一個px物理尺寸相同。
sp (可伸縮畫素, Scalable pixels)
sp的功能與dp相同,但是作為字型單位。預設情況下,sp與dp的值是相同的。
兩者主要的不同在於:sp儲存了使用者的偏好設定,比如無障礙設定(accessibility)時,設定了“大字型”,那麼字型的大小會匹配大字型的大小設定,而不是手動設定的sp大小。