Android 終極螢幕適配方案

2021-09-14 04:07:29 字數 1270 閱讀 5060

我們都知道 android 碎片化問題令人痛心疾首,而造成的螢幕差異正式碎片化的問題中心。

螢幕的尺寸從3英吋到10英吋,解析度從320到1920應有盡有,這對我們ui適配問題造成很大的困難。對於螢幕碎片化問題,android 官方推薦使用dp作為尺寸單位來適配ui,因此我們很有必要清楚px,dp,dpi,ppi,density這些概念。

定義概念

轉化px

畫素點,比如手機解析度320 x 480表示寬有320畫素,高有480畫素

px = density * dp

ppi畫素密度,每英吋包含的畫素數目,這是螢幕物理引數,例如mate 20 pro 的ppi是538

ppi約等於ddpi

dpi畫素密度,跟ppi不同的是,dpi可能被人為調整,例如幾部相同解析度不同尺寸的手機ppi是430,440,450,android會dpi指定為480

dpi 約等於ppi

dpdensity-independent pixels,基於螢幕物理解析度乙個抽象單位,用來說明與密度無關的尺寸

px = dp *(dpi / 160)

density

密度,螢幕每平方英吋還有的畫素點數量

density = dpi/160)

除了dp適配之外,今天我要講的是通過修改系統density來適配。

在編寫xml檔案時候,無論我們給控制項的寬高用dp還是px,還是pt,最終android會把它轉換成px顯示。通過一下原始碼可以得知。

public

static

float

(int unit,

float value,

displaymetrics metrics)

return0;

}

所以可以發現當我們用dp時候,系統都會講我們dp 值 乘以metrics.density換算的px值顯示到手機上,sp的話則是乘以metrics.scaleddensity,預設情況下,metrics.scaleddensity = metrics.density。所以我們只要通過修改系統的metrics.density 就能達到適配的效果。

那麼怎麼修改呢?我們可以讓ui出圖時候定乙個參考的寬度的值,比如width = 320dp;然後我們可以根據當前手機的displaymetrics.widthpixels / width算出density從而替換系統的density。話不多說上**~

public

class

density

}

Android螢幕100 適配方案

計算裝置實際高度 基準寬高 private final static int standard width 1080 private final static int standard height 1920 48 實際裝置解析度 private float displaymetricswidth ...

Android裝置螢幕適配方案總結

安卓手機產品種類繁多,造成安卓裝置螢幕適配難度比較大,總結了幾條在開發過程中需要注意的幾個方面,供參考 1.在對控制項設定長度的單位用dp sp,不用px 2.設計布局介面的過程中,禁用絕對布局,多用相對布局,在能用wrap content match parent weight的地方盡量使用這些屬...

移動端螢幕適配方案

物理畫素 解析度devicepixelratio layout viewport visual viewport ideal viewport 需要用到 meta viewport 中有6個通用屬性 移動頁面設計 480 854的比例 dpi 480 screen.width window.devi...