天天看點

android最小寬度限定符,Android使用最小寬度限定符時最小寬度的計算

Android開發中最頭疼的問題之一就是相容不同尺寸和分辨率的裝置。這裡推薦一篇總結的比較完整的《Android開發:最全面、最易懂的Android螢幕适配解決方案》。這篇文章對螢幕相容的許多問題都做了詳述,這裡隻補充一點,就是關于在使用最小寬度限定符時這個最小寬度的該如何計算。

最小寬度限定符可以使用一個與螢幕像素密度無關為機關(dp)的數值區分出的不同裝置,以應用不同的資源。如下圖中values-sw600dp的sw表示最小寬度,那麼600dp是如何确定的呢?

android最小寬度限定符,Android使用最小寬度限定符時最小寬度的計算

舉個例子:一般情況下我們可以容易知道裝置的分辨率和尺寸的參數。比如現在有平闆A(分辨率1280*720px,尺寸是8inch),手機B(分辨率1920*1080px,尺寸是5.7inch),手機C(分辨率1280*720px,尺寸是5inch)。通過下面的螢幕像素密度的計算公式,我們可以分别計算出他們的螢幕像素密度:

android最小寬度限定符,Android使用最小寬度限定符時最小寬度的計算

平闆A約為184dpi,手機B約為386dpi,手機C約為293dpi。

接下裡需要注意的是,最小寬度是不考慮橫屏或豎屏的,也就是說最小寬度是裝置螢幕四條邊裡最短的那兩條邊。如果需要考慮橫豎屏那麼可以加入螢幕方向限定符,這不在我們讨論之列。那麼接下來我們取最短邊的像素數,并通過下面的公式計算最小寬度(dp):

平闆A約為626dp,手機B約為448dp,手機C約為393dp。

android最小寬度限定符,Android使用最小寬度限定符時最小寬度的計算

如上,使用600dp就可以區分出平闆和手機兩類裝置,如果需要詳細區分手機B和C可以再考慮設定sw400dp作為區分。