一、關於布局適配
1、不要使用絕對布局
2、盡量使用match_parent 而不是fill_parent 。
3、能夠使用權重的地方盡量使用權重(android:layout_weight)
4、如果是純色背景,盡量使用
android
的shape 自定義。
5、如果需要在特定解析度下適配,可以在
res目錄上新建
layout-hxw.xml
的資料夾。比如要適配
1080*1800
的螢幕(魅族
mx3採用此解析度)則新建
layout-1800x1080.xml
的資料夾,然後在下面定義布局。
android
系統會優先查詢解析度相同的布局,如果不存在則換使用預設的
layout
下的布局。
二、關於製作
1、關於設計:
設計圖先定下乙個要設計的尺寸,而且盡量採用在目前最流行的螢幕尺寸(比如目前佔螢幕比重比較多的是
480系列,也即是
480*800
或者400*854
,下面的圖示製作也在次基礎上進行比例的換算)上設計。
先了解一下螢幕的級別:
螢幕級別
螢幕密度
比率(相對)
物理大小(英吋)
畫素大小
通常的解析度
ldpi
1203
0.75
1120
mdpi
160411
160320*480
hdpi
2406
1.51
240480*800
xhdpi
320821
320720*1280
xxhdpi
4801231
4801080*1800
說明:螢幕級別:
注意螢幕級別是按照密度分級,和畫素沒有關係。如果非要讓密度和畫素扯上關係,則需要乙個參照系,
android
使用mdpi
級別作為標準參照螢幕,也就是說在
320*480
解析度的手機上乙個密度可以容納乙個畫素。然後其他密度級別則在此基礎上進行對比。如果理想情況下,
480*800
的螢幕乙個密度可以容納
1.5個畫素。
物理大小:
單位是英吋而不是畫素,也就說乙個英吋在任何解析度下顯示的大小都是一樣的,但是畫素在密度不同的手機裡面顯示的實際的大小是不一樣的(這就是為什麼
android
手機需要適配的原因)。
然後就是重點。 假設
1畫素在
160密度下顯示
1英吋,則
1畫素在
240密度基礎上顯示大約
0.67
英吋,在
320密度下顯示
0.5英吋。於是就出現一種情況,在電腦上的乙個畫素,在不同的手機上看實際的大小不一樣。那麼怎麼讓「設計效果」在不同的手機上看起來顯示的區域一樣呢?
還是假設乙個畫素在
160密度下的顯示在乙個密度內,也假設就是一英吋。那麼需要幾個畫素才能在
240密度級別下顯示在一英吋範圍內呢?答案是
1.5個畫素(根據上圖的比率換算)。
了解了這個關係,接下來就是圖示的製作。
2、關於切圖。
關於切圖有幾個建議:
第一,長寬最好是
3的倍數(根據
android
的推薦logo
圖示的大小是48(
mdpi
),72
(hdpi
),96
(xhdpi
)得出的最小公約數)。
第二,長寬最好是偶數。因為奇數在進行等比壓縮的時候可能有問題。
第三,根據上面兩條,如果長寬是
6的倍數最理想。
第四,如果可以拉伸而不改變設計意圖的情況下,比如純色背景,則使用
android
的9path
工具製作成
.9的。
3、關於圖示的適配。
然後接下來的一切就和設計稿沒什麼關係。在切好圖的基礎上,根據螢幕密度、畫素和實際大小的比例關係。假如設計司在
480*800
的解析度下做好了設計圖,並且切好圖,如果你需要適配
720*1280
螢幕,該怎麼做?根據比例,他們的關係是
2:3,於是你需要按照1.5倍
比例製作圖示,比如你在
480*800
的設計稿上切下來乙個
20*20
畫素的圖,那麼你就需要製作乙個等比放大成
30*30
畫素的圖示,這樣同乙個圖示在
480*800
的螢幕和
720*1280
的螢幕上顯示的實際大小才一樣。同理,如果你需要適配
xxhdpi
則需要在
20*20
的基礎上製作乙個等比放大成
40*40
畫素的圖示。
4、關於圖示的目錄,
480*800
切下來的圖我們放在
drawable-hdpi
目錄下,按照
2:3放大的圖示放在
drawable-xhdpi
目錄下,按照
2倍放大的圖示放在
drawable-xxhdpi
目錄下。
android
會根據手機的密度優先查詢對應的目錄的資源,
比如408*800
解析度下的手機如果密度是
160,則自動載入
drawable-hdpi
這個目錄下的圖示,
如果720*1280
密度是240
的手機自動載入
drawable-xhdpi
這個目錄下的圖示。如果沒有這個資料夾,則查詢和
240最接近的對應密度資料夾。
三、其它
接下來要說的估計會讓你失望,根據上面的步驟也不能完全解決適配的問題,只能是大概適配,而就算根據上面的步驟大概適配了,實際在手機上的效果也有出入。
比如魅族
mx3的解析度是
1080*1800
,標準情況下密度是
480,但是他的密度大約是
524,和
480接近,也就是會查詢drawable-xxhdpi
這個資源下的檔案。也就是說你在
480*800
解析度下切圖然後按兩倍放大的圖示在這台手機上顯示的效果還是比實際的小。
而另乙個要說的問題是
540*960
或者640*960
,他們的密度很可能是或者接近
240也可能是
320。於是在
480*800
的設計稿上切下來的圖並且進行的適配製作,在這些手機上顯示的實際大小也可能或大或小。
綜上所述,我也只是把我的理解和經驗分享一下,但是並不能完美適配螢幕,僅僅當做拋磚引玉,如果您路過並且看到這份建議,如果你正好有更好的方案能夠進行適配,請不吝賜教。
關於android螢幕適配的問題
px pixels 畫素 對應螢幕上的實際畫素點。dip device independent pixels,與密度無關的畫素,基於螢幕密度的抽象單位。在每英吋160點的顯示器上,1dp 1px 即1 1關係。dp 就是 dip sp scaled pixels 放大畫素 與密度和字型縮放度無關的畫...
關於Android螢幕適配的問題
android由於螢幕裝置的種類多種多樣,不像ios那邊只需要適配幾種型號的機器即可。對於螢幕的適配,特別是針對於既有ios 又需要有android的移動應用開發來說,適配更是存在著問題。在此,可以利用一種簡單的解決方案來簡化問題,達到pad和phone手機的簡單適配的效果。可根據displayme...
android螢幕適配
1 配置android應用程式適配在不同的手機上,需要在androidmanifest.xml檔案的manifest標籤中新增子元素 1 2 3 4 5 6 7 8 9 10 manifestxmlns android supports screens android smallscreens tr...