一、Android 屏幕尺寸、px、dpi、dip、sp
參考:https://blog.csdn.net/m0_37828249/article/details/79061899
-
屏幕尺寸:指屏幕的對角線長度,單位是英寸,1英寸等於2.54釐米,常見尺寸有2.4,2.8,3.5,3.7,4.2,5.0,5.5,6.0等。
-
屏幕分辨率px:指在縱橫向上的像素點數,單位是px,1px爲一個像素點,一般格式爲縱向像素橫向像素,如1960×1080。
-
屏幕像素密度dpi:相同尺寸情況下,分辨率越高,屏幕越清晰,即屏幕像素密度越大。屏幕像素密度指每英寸上面的像素點個數,單位是dpi,是“dot per inch”的縮寫,計算方式:dpi = px / 尺寸
-
密度無關像素dip:單位dip或dp,是Density Independent Pixels的縮寫,Android規定,在屏幕像素密度爲160dpi的情況下,1dp=1px。而在像素密度爲320dpi的情況下,1dp=2px,以此類推。計算公式:1dp=(像素密度/160dpi)*1px。
-
sp:全稱cale-independent pixels,與dp類似,用於設置字體大小。
-
設置佈局時,使用dp和sp(字體),不要直接使用px,這樣才能保證屏幕適配。
dp的範圍劃分:
名稱 | 像素密度範圍 |
---|---|
mdpi | 120dpi ~ 160dpi |
hdpi | 160dpi ~ 240dpi |
xhdpi | 240dpi ~ 320dpi |
xxhdpi | 320dpi ~ 480dpi |
xxxhdpi | 480dpi ~ 640dpi |
二、DisplayMetircs
參考:https://blog.csdn.net/zhangqijie001/article/details/5894872
手機的分辨率信息是手機的一項重要信息,Android 提供DisplayMetircs 類可以很方便的獲取分辨率。
Andorid.util 包下的DisplayMetrics 類提供了一種關於顯示的通用信息,如顯示大小,分辨率和字體。
爲了獲取DisplayMetrics 成員,首先初始化一個對象如下:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
注:構造函數DisplayMetrics 不需要傳遞任何參數;調用getWindowManager() 之後,會取得現有Activity 的Handle ,此時,getDefaultDisplay() 方法將取得的寬高維度存放於DisplayMetrics 對象中,而取得的寬高維度是以像素爲單位(Pixel) ,“像素”所指的是“絕對像素”而非“相對像素”。
三、自定義屬性從資源文件獲取長度
getDimension()
getDimensionPixelSize()
getDimensionPixelOffset()
getDimension()、getDimensionPixelSize()和getDimenPixelOffset()的結果值都是將資源文件中定義的dip值乘以屏幕密度,getDimension()返回的是float,其餘兩個返回的是int, 其中getDimensionPixelSize()返回的是實際數值的四捨五入,而getDimensionPixelOffset返回的是實際數值去掉後面的小數點。