Android 螢幕適配

來源:互聯網
上載者:User

標籤:

一、關於布局適配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的設計稿上切下來的圖並且進行的適配製作,在這些手機上顯示的實際大小也可能或大或小。綜上所述,我也只是把我的理解和經驗分享一下,但是並不能完美適配螢幕,僅僅當做拋磚引玉,如果您路過並且看到這份建議,如果你正好有更好的方案能夠進行適配,請不吝賜教。

Android 螢幕適配

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.