Android屏幕适应详解(一)
一、關(guān)于布局適配
1、不要使用絕對(duì)布局
2、盡量使用match_parent 而不是fill_parent 。
3、能夠使用權(quán)重的地方盡量使用權(quán)重(android:layout_weight)
4、如果是純色背景,盡量使用android的shape 自定義。
5、如果需要在特定分辨率下適配,可以在res目錄上新建layout-HxW.xml的文件夾。比如要適配1080*1800的屏幕(魅族MX3采用此分辨率)則新建layout-1800x1080.xml的文件夾,然后在下面定義布局。Android系統(tǒng)會(huì)優(yōu)先查找分辨率相同的布局,如果不存在則換使用默認(rèn)的layout下的布局。
二、關(guān)于圖片制作
1、關(guān)于設(shè)計(jì):
設(shè)計(jì)圖先定下一個(gè)要設(shè)計(jì)的尺寸,而且盡量采用在目前最流行的屏幕尺寸(比如目前占屏幕比重比較多的是480系列,也即是480*800或者400*854,下面的圖標(biāo)制作也在次基礎(chǔ)上進(jìn)行比例的換算)上設(shè)計(jì)。
先了解一下屏幕的級(jí)別:
說(shuō)明:
屏幕級(jí)別:
注意屏幕級(jí)別是按照密度分級(jí),和像素沒有關(guān)系。如果非要讓密度和像素扯上關(guān)系,則需要一個(gè)參照系,android使用mdpi級(jí)別作為標(biāo)準(zhǔn)參照屏幕,也就是說(shuō)在320*480分辨率的手機(jī)上一個(gè)密度可以容納一個(gè)像素。然后其他密度級(jí)別則在此基礎(chǔ)上進(jìn)行對(duì)比。如果理想情況下,480*800的屏幕一個(gè)密度可以容納1.5個(gè)像素。
物理大小:
單位是英寸而不是像素,也就說(shuō)一個(gè)英寸在任何分辨率下顯示的大小都是一樣的,但是像素在密度不同的手機(jī)里面顯示的實(shí)際的大小是不一樣的(這就是為什么android手機(jī)需要適配的原因)。
然后就是重點(diǎn)。
假設(shè)1像素在160密度下顯示1英寸,則1像素在240密度基礎(chǔ)上顯示大約0.67英寸,在320密度下顯示0.5英寸。于是就出現(xiàn)一種情況,在電腦上的一個(gè)像素,在不同的手機(jī)上看實(shí)際的大小不一樣。那么怎么讓“設(shè)計(jì)效果”在不同的手機(jī)上看起來(lái)顯示的區(qū)域一樣呢?
還是假設(shè)一個(gè)像素在160密度下的顯示在一個(gè)密度內(nèi),也假設(shè)就是一英寸。那么需要幾個(gè)像素才能在240密度級(jí)別下顯示在一英寸范圍內(nèi)呢?答案是1.5個(gè)像素(根據(jù)上圖的比率換算)。
了解了這個(gè)關(guān)系,接下來(lái)就是圖標(biāo)的制作。
2、關(guān)于切圖。
關(guān)于切圖有幾個(gè)建議:
第一,長(zhǎng)寬最好是3的倍數(shù)(根據(jù)android的推薦logo圖標(biāo)的大小是48(mdpi),72(hdpi),96(xhdpi)得出的最小公約數(shù))。
第二,長(zhǎng)寬最好是偶數(shù)。因?yàn)槠鏀?shù)在進(jìn)行等比壓縮的時(shí)候可能有問題。
第三,根據(jù)上面兩條,如果長(zhǎng)寬是6的倍數(shù)最理想。
第四,如果可以拉伸而不改變?cè)O(shè)計(jì)意圖的情況下,比如純色背景,則使用android的9path工具制作成.9的圖片。
?
3、關(guān)于圖標(biāo)的適配。
然后接下來(lái)的一切就和設(shè)計(jì)稿沒什么關(guān)系。在切好圖的基礎(chǔ)上,根據(jù)屏幕密度、像素和實(shí)際大小的比例關(guān)系。假如設(shè)計(jì)司在480*800的分辨率下做好了設(shè)計(jì)圖,并且切好圖,如果你需要適配720*1280屏幕,該怎么做?根據(jù)比例,他們的關(guān)系是2:3,于是你需要按照1.5倍比例制作圖標(biāo),比如你在480*800的設(shè)計(jì)稿上切下來(lái)一個(gè)20*20像素的圖,那么你就需要制作一個(gè)等比放大成30*30像素的圖標(biāo),這樣同一個(gè)圖標(biāo)在480*800的屏幕和720*1280的屏幕上顯示的實(shí)際大小才一樣。同理,如果你需要適配xxhdpi則需要在20*20的基礎(chǔ)上制作一個(gè)等比放大成40*40像素的圖標(biāo)。
?
4、關(guān)于圖標(biāo)的目錄,480*800切下來(lái)的圖我們放在drawable-hdpi目錄下,按照2:3放大的圖標(biāo)放在drawable-xhdpi目錄下,按照2倍放大的圖標(biāo)放在drawable-xxhdpi目錄下。
android會(huì)根據(jù)手機(jī)的密度優(yōu)先查找對(duì)應(yīng)的目錄的資源,
比如408*800分辨率下的手機(jī)如果密度是160,則自動(dòng)加載drawable-hdpi這個(gè)目錄下的圖標(biāo),
如果720*1280密度是240的手機(jī)自動(dòng)加載drawable-xhdpi這個(gè)目錄下的圖標(biāo)。如果沒有這個(gè)文件夾,則查找和240最接近的對(duì)應(yīng)密度文件夾。
三、其它
接下來(lái)要說(shuō)的估計(jì)會(huì)讓你失望,根據(jù)上面的步驟也不能完全解決適配的問題,只能是大概適配,而就算根據(jù)上面的步驟大概適配了,實(shí)際在手機(jī)上的效果也有出入。
比如魅族MX3的分辨率是1080*1800,標(biāo)準(zhǔn)情況下密度是480,但是他的密度大約是524,和480接近,也就是會(huì)查找drawable-xxhdpi這個(gè)資源下的文件。也就是說(shuō)你在480*800分辨率下切圖然后按兩倍放大的圖標(biāo)在這臺(tái)手機(jī)上顯示的效果還是比實(shí)際的小。
而另一個(gè)要說(shuō)的問題是540*960或者640*960,他們的密度很可能是或者接近240也可能是320。于是在480*800的設(shè)計(jì)稿上切下來(lái)的圖并且進(jìn)行的適配制作,在這些手機(jī)上顯示的實(shí)際大小也可能或大或小。
轉(zhuǎn)載于:https://www.cnblogs.com/sage-blog/p/4026646.html
總結(jié)
以上是生活随笔為你收集整理的Android屏幕适应详解(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scrollview背景
- 下一篇: [openmp]使用嵌套互斥锁锁定变量