天天看點

Android螢幕适配小結

文章出處:http://blog.csdn.net/dongxiaoyu/article/details/43015747

一、關于布局适配 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 120 3 0.75 1 120
mdpi 160 4 1 1 160 320*480
hdpi 240 6 1.5 1 240 480*800
xhdpi 320 8 2 1 320 720*1280
xxhdpi 480 12 3 1 480 1080*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 的設計稿上切下來的圖并且進行的适配制作,在這些手機上顯示的實際大小也可能或大或小。 綜上所述,我也隻是把我的了解和經驗分享一下,但是并不能完美适配螢幕,僅僅當做抛磚引玉,如果您路過并且看到這份建議,如果你正好有更好的方案能夠進行适配,請不吝賜教。