android螢幕適配原理

2021-07-25 12:42:37 字數 1357 閱讀 2711

android裝置碎片化非常嚴重, 如圖,每個小色塊代表一種裝置解析度

各種解析度的裝置要想全部完美適配是不可能的,那麼就可以理解,如上幾個資料夾劃分了一部分區間,拿過來乙個機器,它的畫素密度引數接近哪個就用哪個資料夾的

做測試:

heightpixels   widthpixels    density   densitydpi

g35:            752            1280                1.0          160(baseline)

g200:          723            1366               1.0           160

huawei:   720            1280               2.0            320

比較huawei與g200,乙個是我的5英吋手機,乙個是老平板,有我手機三個大,尺寸懸殊,但是解析度卻相差不大。

densitydpi是什麼:顧名思義 dpi就是dot per inch,也就是2.54厘公尺長度有多少個畫素點

density是為了表徵densitydpi的比例 系統提供的baseline 也就是基準1是160,記為1,那麼其他dpi的比例就可以計算出來了,比如320dpi的密度是320/160=2,有種120dpi的老爺機密度是120/160=0.75:

不過實際計算出來的dpi和android系統定義的dpi之間是有區別的:

由勾股定理公式:

dpi = √(長度畫素數² + 寬度畫素數²) / 螢幕對角線英吋數

假如解析度1280*700,計算dpi, 那麼5英吋計算出來的是300,與displaymetrics顯示的並不相同,這麼多尺寸的安卓裝置,這樣計算出來的dpi應該也會有明顯的碎片化傾向,但事實上,每部安卓手機螢幕都有乙個初始的固定dpi值,這些數值固定為120、160、240、320、480,可以看作為「系統密度」。安卓對介面元素進行縮放的比例依據正是系統定義的dpi值,而不是實際計算出來的dpi。所以裝置執行安卓程式尋找hdpi資料夾還是mdpi資料夾就是用的這個系統密度。

(來自單位ppi(pixels per inch)與dpi同義)

以我的華為手機為例,算出來的dpi為300,在圖中最接近320dpi,那麼就去xhdpi資料夾找,找不到,就去xxhdpi中找,找不到再往密度高的資料夾中去,如果到頭了還找不到,就從hdpi中找,找不到就往下找,一直到找到為止。

android螢幕適配

1 配置android應用程式適配在不同的手機上,需要在androidmanifest.xml檔案的manifest標籤中新增子元素 1 2 3 4 5 6 7 8 9 10 manifestxmlns android supports screens android smallscreens tr...

Android螢幕適配

在sdk中的幫助文件中。develpe training best practices supporting multiple screens 這裡有多屏適配的介紹。現做簡單記錄。screen size small 至少 426dp x 320dp normal 至少 470dp x 320dp l...

android螢幕適配

ui在不同的螢幕畫素或大小中顯示效果可能會不同 1 建議使用盡量使用線性布局和相對布局,基本上不會產生螢幕大小不適應的問題 2 設定控制項寬高的時候使用單位dip dp 是根據當前裝置大小比例計算出來的 3 文字設定盡量使用sp單位 4 盡量不使用px設定大小 畫素px和dip相互轉換工具,實現兩種...