android 螢幕適配理解

2021-09-02 22:34:02 字數 2756 閱讀 1440

1. 手機螢幕要素

手機:  m2

解析度:1080x1920 (手機寬度和長度的畫素數)

螢幕尺寸:手機螢幕對角線長度  8寸

螢幕密度:dpi  螢幕每英吋的畫素數

計算公式:(1080平方+1920平方)再開平方/8寸 = 275.36 dpi

density:  密度()   

android中規定 160px/英吋,就是每英吋為160px;    意味著160dpi螢幕密度: 1dp = 1px

所以此手機的密度為:  275.36dpi/160= 1.72 倍;  意味著160dpi螢幕密度: 1dp = 1.72px

綜上所述:當我們android開發者需要做適配時,可以獲取解析度和螢幕尺寸計算出螢幕密度,再計算出密度(即當前手機的1dp=xxpx),再根據ui給的px尺寸去給出dp值; 當ui標註高為30px時,我們用30/1.72;

getresources().getdisplaymetrics().densitydpi 就是螢幕密度。

getresources().getdisplaymetrics().density 就是密度, 也可以理解為1dip相當於多少個px啦。

2. 尺寸的適配 

上述1中獲取的是螢幕真實的密度,下列是系統標準密度,不可能針對每個真實密度去做一套配圖,所以以系統標準密度為準,去作圖適配;特殊的尺寸時,再做特殊適配;

螢幕密度              標準                密度                解析度

120 dpi、             ldpi               0.75倍              240x320

160 dpi(基準)  mdpi             1倍                   320x480

240 dpi                hdpi              1.5倍               480x800

320 dpi                xhdpi             2倍                  720x1280

480dpi                 xxhdpi           3倍                  1080x1920

建議在xhdpi中作圖(或者xxhdpi也可以),鑑於apk的大小,一般在xhdpi中放入就可以,計算的簡單,就是1dp=2px啊,放進drawable-xhdpi的資源資料夾中。 的大小就通過dp去控制,這樣就可以適配各種手機了;

3.螢幕的寬高差異

解析度                      320x480                 480x800                720x1280與1080x1920

螢幕寬度                      320dp                    320dp                                360dp

螢幕寬高比                    2:3                         3:5                                    9:16

如果想消除這些比例差異,可以通過新增布局檔案來實現。一般情況下,布局檔案放在layout資料夾中,如果要單獨對360dp的螢幕進行調整,你可以單做做乙個布局檔案放在layout-w360dp中;如果你想對某個特殊的解析度進行調整,那麼你可以將布局檔案放在標有解析度的資料夾中,如 layout-854×480。

android mainfest中新增,支援大屏比差;做華為mate9的適配時,和ui匹配不上,最後發現是螢幕寬高比原因:

備註:resizeableactivity 屬性在 targetsdkversion 小於 24 的應用中值為 false,其他為 true。

4.幾個資源的資料夾

在720×1280中做了,要讓開發人員放到drawable-xhdpi的資源資料夾中,這樣才可以顯示正確。個人認為僅提供一套素材就可以 了,可以測試一下應用在低端手機上執行是否流暢,如果比較卡頓,可以根據需要提供部分mdpi的素材,因為xhdpi中的執行在mdpi的手機上 會比較佔記憶體。

以應用圖示為例,xhdpi中的圖示大小是96px,如果要單獨給mdpi提供圖示,那麼這個圖示大小是48px,放到drawable-mdpi 的資源資料夾中。各個資源資料夾中的尺寸同樣符合ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12的規律。

如果你把乙個高2px的分割線素材做成了9.png,你想讓細線在不同密度中都是2px,而不被安卓根據密度進行縮放,怎麼辦?你可以把這個分 割線素材放到drawable-nodpi中,這個資源資料夾中的,將按照實際畫素大小進行顯示,而不會被安卓根據密度進行縮放。即在mdpi中細線 是2px(2dp),在xhdpi中細線是2px(1dp)。

5.螢幕適配命名

layout

layout-land

layout-port

values-port-xhdpi

drawable-land-xxhdpi

values-sw600dp

6.注: 計算出實際的dpi螢幕畫素,做android的螢幕適配還是要匹配android官方標準的dp去適配的,

例:計算出的實際dpi為401dpi,我們在android適配時以以上標準為基礎,就是xxhdpi, 3倍的,1dp=3px去做螢幕適配

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相互轉換工具,實現兩種...