Android螢幕適配(理論適配100%機型)

anne117發表於2021-09-25

螢幕適配是我們Android開發,老生常談的問題!

面試官:看你簡歷上寫著熟悉Android螢幕的適配,那就說一說吧

我:

Android螢幕適配(理論適配100%機型)

1、我們為什麼要適配?

Android系統是開放的,是開源的,任何使用者,開發者,手機廠商,運營商都可以對Android進行定製,比如小米,華為等等,還有許許多多的工控板,用的也是Android系統。於是乎,導致了執行Android系統的裝置,多種多樣,既然裝置多了,就保不齊它們有著不同的螢幕尺寸,和畫素密度。儘管系統可透過基本的縮放和調整大小功能使介面適應不同螢幕,但Android開發者應做出進一步最佳化,使我們的程式在各類螢幕上更beautiful的顯示出來。


Android螢幕適配(理論適配100%機型)

2、關於螢幕的幾個概念

螢幕尺寸: 螢幕尺寸指螢幕的對角線的長度,單位是英寸,1英寸=2.54cm

比如我的小米11Pro的尺寸

Android螢幕適配(理論適配100%機型)

螢幕解析度: 螢幕解析度是指在橫縱向上的畫素點數,一般以縱向畫素 橫向畫素,19201080 表示寬度方向有1080個畫素點,高度方向有1920個畫素點,整個螢幕有1920*1080個畫素

單位px 1px=1畫素點

螢幕畫素密度(dpi): 螢幕畫素密度是指每英寸上的畫素點數,單位是dpi,即 dot per inch 的縮寫。螢幕畫素密度與螢幕尺寸和螢幕解析度有關係,在單一變化條件下,螢幕尺寸越小,解析度越高,畫素密度越大

密度型別 代表的解析度(px) 螢幕畫素密度(dpi)
低密度(ldpi) 240x320 120
中密度(mdpi) 320x480 160
高密度(hdpi) 480x800 240
超高密度(xhdpi) 720x1280 320
超超高密度(xxhdpi) 1080x1920 480

解析度是寬×高

Android螢幕適配(理論適配100%機型)

密度無關畫素: density-independent pixel ,dp或者dip,就是我們Android開發時用的寬度單位,可以保證在不同螢幕畫素密度的裝置上顯示相同的效果

dp和PX轉換

Android螢幕適配(理論適配100%機型)

dpi就是螢幕畫素密度,160這個值是谷歌官方規定的一個值,

規定以160dpi(即螢幕解析度為320x480)為基準:1dp=1px

看以上的資料資料,我們發現,再開發過程中我們去使用dp的話,Android根據螢幕畫素密度去適配了,但是為什麼我們寫出來的頁面還是效果不理想呢!

3、Android螢幕適配 方案

那是因為我們UI在給我們圖的時候螢幕寬度是一個固定值,但是由於Android手機的螢幕的多樣性,螢幕畫素換成dp之後,長度也是多樣性的,所以我們按照UI的尺寸出完效果,效果所以不太理想,為了解決這個問題,我們來更改一下幾個引數值,來達到,我們按照UI給的設計圖尺寸來編寫程式碼,在其他Android裝置上達到一個百分比適配!

以360dp為寬度的設計稿為例子 density的值就是dpi/160

public static void setCustomDensity
    (Activity activity,final Application application){    final DisplayMetrics appDisplayMetrics
        =application.getResource().getDisplayMetrics();        
    final float targetDensity=appDisplayMetrics.widthPixels/360;    final int targetDensityDpi=(int)(160*targetDensity);
    appDisplayMetrics.density=targetDensity;
    appDisplayMetrics.densityDpi=targetDensity;    //Activty 的DisplayMetrics也要設定
    final DisplayMetrics activityDisplayMetrics
        =activity.getResource().getDisplayMetrics();
         activityDisplayMetrics.density=targetDensity;
    activityDisplayMetrics.densityDpi=targetDensity;
    
}
複製程式碼

這樣就能按百分比適配了,螢幕寬度畫素/設計稿尺寸 能把1dp=多少畫素值算出來,也就是density的值,這個值算出來之後,就能算出來360dp的dpi,設定完之後,再按設計稿的尺寸來,就能做到和設計稿百分比適配了

Android螢幕適配(理論適配100%機型)

這個就是適配的核心方案,感覺適配大部分裝置效果還是很好的!

作者:被遺忘的涼白開
來源:掘金

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007350/viewspace-2793663/,如需轉載,請註明出處,否則將追究法律責任。

相關文章