android適配基礎:
屏幕分辨率:分辨率就是屏幕的橫縱像素點,單位是PX 1px=1像素點佃蚜。一般是高寬庸娱,比如1280800 代表豎向的像素點是1280,橫是800谐算。
屏幕尺寸:屏幕對角線的長度熟尉,單位是英寸 1英寸=2.54厘米。
屏幕像素密度:指每英寸的像素點洲脂,單位DPI斤儿。屏幕像素密度和屏幕尺寸和分辨率有關。
換算規(guī)則:
- 160dpi下 1dp=1px
- 240dpi下 1dp=1.5px 恐锦。
- 320就是1dp=2px
- 160 1倍圖
- 240 1.5倍圖
- 320 2倍圖
android適配可以分成三種
** 1.圖片大小的適配**
2.字體大小的適配
3.布局大小的適配
下面是官網(wǎng)給的倍數(shù)圖和對應的dpi
1.圖片大小適配
google為我們提供了drawable文件夾里面有
drawalbe-mdpi 120dp~160dp
drawalbe-hdpi 160dp~240dp
drawalbe-xhdpi 240dp~320dp
drawalbe-xxhdpi 320dp~480dp
drawalbe-xxxhdpi 480dp~640dp
mipmap-hdpi
它只是用來放啟動圖標的
它的好處就是往果,你只用放一個mipmap圖標,它就會給你各種版本(比如平板一铅,手機)的apk自動生成相應分辨率的圖標陕贮,以節(jié)約空間。
匹配規(guī)則:
- 如果當前屏幕密度是160dp那么android程序就會去找 drawable-hdpi里面的圖片文件潘飘,每個文件對應一個dpi的范圍肮之。
- 如果當在對應的文件夾中沒有匹配到資源掉缺,那么程序優(yōu)先回去更高dpi文件中去匹配,如果沒有更高的dpi文件了戈擒,那就匹配drawable-nodpi眶明,如果也找不到那么就會去當前級別以下的,低級別的dpi中找到為止峦甩。
. 適配盡量適配高分辨率的圖片赘来,這樣可以節(jié)省內(nèi)容開銷。如果當前是xhdpi級別凯傲,匹配的資源沒有犬辰,如果找到的是一個低級別的dpi。那就會導致圖片放大冰单,損耗內(nèi)存開銷幌缝。
2.字體大小
sp
3.布局大小的適配
能用權重的就是用權重,這樣可以達到100%適配诫欠。盡量少用dp去寫死布局的大小涵卵,這樣有可能會出現(xiàn)在不同的dpi手機中出現(xiàn)不小不是很統(tǒng)一的情況,原因是你比如寫的dp的產(chǎn)出是UI根據(jù) dpi160 1280*800的分辨率上標注的荒叼,如果運行到dpi320的手機上那就可能出現(xiàn)換算結果不一致的問題轿偎,所以需要單獨針對這個分辨率去標注一下。
最小寬度限定符values-sw820dp
這里的sw代表smallwidth的意思被廓,當你所有屏幕的最小寬度都大于600dp時坏晦,屏幕就會自動到帶sw600dp后綴的資源文件里去尋找相關資源文件,
這里的最小寬度是指屏幕寬高的較小值嫁乘,每個屏幕都是固定的昆婿,不會隨著屏幕橫向縱向改變而改變。
**values-w820dp **
意思就是最小width xxxdp就會去匹配里面的的資源文件
layout-w600dp 帶這樣后綴的資源文件的資源文件制定了屏幕寬度的大于Ndp的情況下使用該資源文件蜓斧,但它和sw<N>dp不同的是仓蛆,
當屏幕橫向縱向切換時,屏幕的寬度是變化的挎春,以變化后的寬度來與N相比看疙,看是否使用此資源文件下的資源。
layout-h600dp
這個后綴的使用方式和w<N>dp一樣搂蜓,隨著屏幕橫縱向的變化狼荞,屏幕高度也會變化,根據(jù)變化后的高度值來判斷是否使用h<N>dp 帮碰,但這種方式很少使用,因為屏幕在縱向上通常能夠滾動導致長度變化拾积,不像寬度那樣基本固定殉挽,因為這個方法靈活性不是很好丰涉,google官方文檔建議盡量少使用這種方式。
** values-large Android3.2之前的平板布局**
values-sw600dp-land 橫屏
values-sw600dp-port 豎屏