天天看點

android螢幕适配全攻略

在講之前,我先說下我們這裡講的是關于不同手機的螢幕适配,不包括平闆,下面開始:

幾個概念:螢幕尺寸,螢幕分辨率,螢幕像素密度

螢幕尺寸(inch): 1英寸 = 2.54厘米 就是螢幕對角線的長度

螢幕分辨率(px):1px = 1個像素點 1920 * 1080

螢幕像素密度(dpi = px/inch):每英寸包含的像素點。px/inch

下面幾個對本文比較重要。

dp:跟螢幕密度有關的機關,一般情況下padding,margin這些屬性呀都用dp.比如以160dpi為基準的裝置1dp = 1px,是以320dpi的裝置是1dp=2px

sp:這個是針對字型的機關,所有自己都用此機關官方推薦用12 14 18 22

px:像素機關

我們在布局中通常為了适配,經常使用weight這個布局屬性,但是我們來看下面兩張圖

1.

android螢幕适配全攻略

2.

android螢幕适配全攻略

觀察他們的差別,為什麼layout_weight的屬性一樣,然而結果卻是相反的了,仔細觀察我們返現layout_width是match_parent。是以我們可以通過下面這個公式推導就能了解此結果

Weight

計算出的寬度= 原來寬度+剩餘空間所占百分比的寬度

螢幕寬度 L

Button1(這裡面的2L就是兩個match_parent)

2/3L = L +(L-2L)*1/3 = L-1/3L=2/3L

Button2

1/3L = L+(L-2L)*2/3 = L-2/3L= 1/3L

是以大家了解了weight這個屬性的本質了吧

最後還有一點,可謂是螢幕适配大殺器,我先給出問題然後在給出解決方案

android螢幕适配全攻略

其實我們可以這麼了解上述圖檔描述的問題,即一般螢幕都是16:9的,而魅族的卻是不同比例的螢幕但兩個手機的尺寸是一樣的,是以同樣寬度的dp在兩個螢幕顯示的效果不一樣,雖然在兩個螢幕上的所占的px是想通的,顯示效果卻不一樣,可以看下下面的結果

android螢幕适配全攻略

最後說一下這個解決方案參考這邊博文http://blog.csdn.net/lmj623565791/article/details/45460089#t4