1、關於佈局適配android
一、不要使用絕對佈局工具
二、儘可能使用match_parent 而不是fill_parent 。佈局
三、可以使用權重的地方儘可能使用權重(android:layout_weight)設計
四、若是是純色背景,儘可能使用android的shape 自定義。3d
五、若是須要在特定分辨率下適配,能夠在res目錄上新建layout-HxW.xml的文件夾。好比要適配1080*1800的屏幕(魅族MX3採用此分辨率)則新建layout-1800x1080.xml的文件夾,而後在下面定義佈局。Android系統會優先查找分辨率相同的佈局,若是不存在則換使用默認的layout下的佈局。xml
2、關於圖片製做blog
一、關於設計:圖片
設計圖先定下一個要設計的尺寸,並且儘可能採用在目前最流行的屏幕尺寸(好比目前佔屏幕比重比較多的是480系列,也便是480*800或者400*854,下面的圖標製做也在次基礎上進行比例的換算)上設計。ip
先了解一下屏幕的級別:資源
屏幕級別:
注意屏幕級別是按照密度分級,和像素沒有關係。若是非要讓密度和像素扯上關係,則須要一個參照系,android使用mdpi級別做爲標準參照屏幕,也就是說在320*480分辨率的手機上一個密度能夠容納一個像素。而後其餘密度級別則在此基礎上進行對比。若是理想狀況下,480*800的屏幕一個密度能夠容納1.5個像素。
物理大小:
單位是英寸而不是像素,也就說一個英寸在任何分辨率下顯示的大小都是同樣的,可是像素在密度不一樣的手機裏面顯示的實際的大小是不同的(這就是爲何android手機須要適配的緣由)。
而後就是重點。
假設1像素在160密度下顯示1英寸,則1像素在240密度基礎上顯示大約0.67英寸,在320密度下顯示0.5英寸。因而就出現一種狀況,在電腦上的一個像素,在不一樣的手機上看實際的大小不同。那麼怎麼讓「設計效果」在不一樣的手機上看起來顯示的區域同樣呢?
仍是假設一個像素在160密度下的顯示在一個密度內,也假設就是一英寸。那麼須要幾個像素才能在240密度級別下顯示在一英寸範圍內呢?答案是1.5個像素(根據上圖的比率換算)。
瞭解了這個關係,接下來就是圖標的製做。
二、關於切圖。
關於切圖有幾個建議:
第一,長寬最好是3的倍數(根據android的推薦logo圖標的大小是48(mdpi),72(hdpi),96(xhdpi)得出的最小公約數)。
第二,長寬最好是偶數。由於奇數在進行等比壓縮的時候可能有問題。
第三,根據上面兩條,若是長寬是6的倍數最理想。
第四,若是能夠拉伸而不改變設計意圖的狀況下,好比純色背景,則使用android的9path工具製做成.9的圖片。
三、關於圖標的適配。
而後接下來的一切就和設計稿沒什麼關係。在切好圖的基礎上,根據屏幕密度、像素和實際大小的比例關係。假如設計司在480*800的分辨率下作好了設計圖,而且切好圖,若是你須要適配720*1280屏幕,該怎麼作?根據比例,他們的關係是2:3,因而你須要按照1.5倍比例製做圖標,好比你在480*800的設計稿上切下來一個20*20像素的圖,那麼你就須要製做一個等比放大成30*30像素的圖標,這樣同一個圖標在480*800的屏幕和720*1280的屏幕上顯示的實際大小才同樣。同理,若是你須要適配xxhdpi則須要在20*20的基礎上製做一個等比放大成40*40像素的圖標。
四、關於圖標的目錄,480*800切下來的圖咱們放在drawable-hdpi目錄下,按照2:3放大的圖標放在drawable-xhdpi目錄下,按照2倍放大的圖標放在drawable-xxhdpi目錄下。
android會根據手機的密度優先查找對應的目錄的資源,
好比408*800分辨率下的手機若是密度是160,則自動加載drawable-hdpi這個目錄下的圖標,
若是720*1280密度是240的手機自動加載drawable-xhdpi這個目錄下的圖標。若是沒有這個文件夾,則查找和240最接近的對應密度文件夾。
3、其它
接下來要說的估計會讓你失望,根據上面的步驟也不能徹底解決適配的問題,只能是大概適配,而就算根據上面的步驟大概適配了,實際在手機上的效果也有出入。
好比魅族MX3的分辨率是1080*1800,標準狀況下密度是480,可是他的密度大約是524,和480接近,也就是會查找drawable-xxhdpi這個資源下的文件。也就是說你在480*800分辨率下切圖而後按兩倍放大的圖標在這臺手機上顯示的效果仍是比實際的小。
而另外一個要說的問題是540*960或者640*960,他們的密度極可能是或者接近240也多是320。因而在480*800的設計稿上切下來的圖而且進行的適配製做,在這些手機上顯示的實際大小也可能或大或小。