我們都知道 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...