布局檔案中的sp dp還有px的區別

2022-06-15 17:30:15 字數 1692 閱讀 5773

眾所周知,android廠商非常多,各種尺寸的android手機、平板層出不窮。導致了android生態環境的碎片化現象越來越嚴重。google公司為了解決解析度過多的問題,在android的開發文件中定義了px、dp、sp,方便開發者適配不同解析度的android裝置。對於初級程式設計師來說理解掌握適配的一些基礎知識是必須的。

pixel,即畫素,1px代表螢幕上的乙個物理的畫素點。但px單位不被建議使用。因為同樣畫素大小的在不同手機顯示的實際大小可能不同。要用到px的情況是需要畫1畫素**線或陰影線的時候,如果用其他單位畫則會顯得模糊。

要理解dp,首先要先引入dpi這個概念,dpi全稱是dots per inch,對角線每英吋的畫素點的個數,所以,它的計算公式如下:

比如height和width即為長寬的畫素,平方和即為對角線的畫素個數,size即我們常說的5寸手機、4寸手機中的5和4,即對角線的長度。

所以,一樣是5寸的手機,解析度越高,dpi越高。解析度相同,螢幕對角線英吋數越小,dpi越高。

而dp也叫dip,是device independent pixels。裝置不依賴畫素的乙個單位。在不同的畫素密度的裝置上會自動適配,比如:

在320x480解析度,畫素密度為160,1dp=1px

在480x800解析度,畫素密度為240,1dp=1.5px

計算公式:px = dp * (dpi/160)

我們做個簡單的sample驗證一下,如下,乙個布局**

在480*800解析度中,3.7螢幕對角線英吋數的裝置效果圖如下

在480*800解析度中,5.1螢幕對角線英吋數的裝置效果圖如下

▲ 由此可以看出使用px作為單位的,在不同的裝置中會顯示不同的效果。使用dp作為單位的,會根據不同的裝置進行轉化,適配不同機型。所以建議在長度寬度的數值使用dp作為單位。

既然我們在上面說了,dp可以自動適配裝置機型,那在字型裡是否也同樣可行?我們再做個簡單的sample驗證一下,如下,乙個布局**

在480*800解析度中,3.7螢幕對角線英吋數的裝置效果圖如下

在480*800解析度中,3.7螢幕對角線英吋數的裝置下,我們修改手機系統字型大小,得到效果圖如下

▲ 由此可以看出使用sp作為字型大小單位,會隨著系統的字型大小改變,而dp作為單位則不會。所以建議在字型大小的數值要使用sp作為單位

提供乙個工具類:dp與px值轉換

public class densityutil 

/*** 根據手機的解析度從 px(畫素) 的單位 轉成為 dp

*/public static int px2dp(context context, float pxvalue)

}

android中px與sp,dp之間的轉換

android中px與sp,dp之間的轉換 原創 2016年12月17日 22 00 51 標籤 單位轉換 螢幕解析度 螢幕尺寸 dpi 4552 由於android手機廠商很多,導致了不同裝置螢幕大小和解析度都不一樣,然而我們開發者要保持在不同裝置上顯示同樣的視覺效果,就需要做一些適配效果。相關名...

vue中的自適應布局( px與視口)

1.px與視口 2.3.查詢 4.rem 5.vm vh 在靜態頁面中,通常使用px 畫素 作為盒子容器寬高的單位,在pc端,通常認為css中,1px所表示的真實長度是固定的。那麼,px真的是乙個裝置無關,跟長度單位公尺和分公尺一樣是固定大小的嗎?答案是否定的,pc端下和移動端下我們設定的font ...

布局檔案中的筆記

android linespacingextra 2dp 設定行間距為 2dp android linespacingmultiplier 1.2 設定行間距的倍數為1.2倍 android scaletype fitxy 在x軸和y軸上均為沾滿拉伸 當內容過多無法全部顯示時 採用省略號 省略號在結...