android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
http://www.tuicool.com/articles/nuyMZb
?
1 Android手機(jī)目前常見的分辨率?
1.1 手機(jī)常見分辨率:?
4:3?
VGA ? ? 640*480 (Video Graphics Array)?
QVGA ?320*240 (Quarter VGA)?
HVGA ?480*320 (Half-size VGA)?
SVGA ?800*600 (Super VGA)?
5:3?
WVGA ?800*480 (Wide VGA)?
16:9?
FWVGA 854*480 (Full Wide VGA)?
HD ? ? ? ?1920*1080 High Definition?
QHD ? ? 960*540?
720p ? ?1280*720 ?標(biāo)清?
1080p ?1920*1080 高清?
1.2 分辨率對應(yīng)DPI?
"HVGA ? ?mdpi"?
"WVGA ? hdpi "?
"FWVGA hdpi "?
"QHD ? ? ?hdpi "?
"720P ? ? xhdpi"?
"1080P ? xxhdpi "?
2 屏幕適配的注意事項?
2.1 基本設(shè)置?
2.1.1 AndroidManifest.xml設(shè)置?
在中Menifest中添加子元素?
android:anyDensity="true"時,應(yīng)用程序安裝在不同密度的終端上時,程序會分別加載xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夾中的資源。相反,如果設(shè)為false,即使在文件夾下?lián)碛邢嗤Y源,應(yīng)用不會自動地去相應(yīng)文件夾下尋找資源:?
1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三個文件夾中有同一張圖片資源的不同密度表示,那么系統(tǒng)會去加載drawable_mdpi文件夾中的資源;?
2) 如果drawable-hpdi中有高密度圖片,其它兩個文件夾中沒有對應(yīng)圖片資源,那么系統(tǒng)會去加載drawable-hdpi中的資源,其他同理;?
3) 如果drawable-hdpi,drawable-mdpi中有圖片資源,drawable-ldpi中沒有,系統(tǒng)會加載drawable-mdpi中的資源,其他同理,使用最接近的密度級別。?
2.1.2 橫屏豎屏目錄區(qū)分?
1) drawable?
a) drawable-hdpi該圖片即適用于橫屏,也適用于豎屏;?
b) drawable-land-hdpi,當(dāng)屏幕為橫屏,且為高密度時,加載此文件夾的資源;?
c) drawable-port-hdpi,當(dāng)屏幕為豎屏,且為高密度時,加載此文件夾中的資源。其他同理。?
2) layout?
在res目錄下建立layout-port和layout-land兩個目錄,里面分別放置豎屏和橫屏兩種布局文件,以適應(yīng)對橫屏豎屏自動切換。?
2.2 多屏幕適配的4條黃金原則?
1) 在layout文件中設(shè)置控件尺寸時應(yīng)采用fill_parent、wrap_content、match_parent和dp;?
具體來說,設(shè)置view的屬性android:layout_width和android:layout_height的值時,wrap_content,match_parent或dp比px更好,文字大小應(yīng)該使用sp來定義。?
2) 在程序的代碼中不要出現(xiàn)具體的像素值,在dimens.xml中定義;?
為了使代碼簡單,android內(nèi)部使用pix為單位表示控件的尺寸,但這是基于當(dāng)前屏幕基礎(chǔ)上的。為了適應(yīng)多種屏幕,android建議開發(fā)者不要使用具體的像素來表示控件尺寸。?
3) 不使用AbsoluteLayout(android1.5已廢棄) ,可以使用RelativeLayout替代;?
4) 對不同的屏幕提供合適大小的圖片。?
不同大小屏幕用不同大小的圖片,low:medium:high:extra-high圖片大小的比例為3:4:6:8;舉例來說,對于中等密度(medium)的屏幕你的圖片像素大小為48×48,那么低密度(low)屏幕的圖片大小應(yīng)為36×36,高(high)的為72×72,extra-high為96×96。?
2.3 使用9-patch PNG圖片?
使用圖片資源時,如果出現(xiàn)拉伸,因?yàn)閳D片處理的原因,會變形,導(dǎo)致界面走形。9-patch PNG圖片也是一種標(biāo)準(zhǔn)的PGN圖片,在原生PNG圖片四周空出一個像素間隔,用來標(biāo)識PNG圖片中哪些部分可以拉伸、哪些不可以拉伸、背景上的邊框位置等。?
“上、左”定義可拉伸區(qū)域?
“右、下”定義顯示區(qū)域,如果用到完整填充的背景圖,建議不要通過android:padding來設(shè)置邊距,而是通過9-patch方式來定義。?
Android SDK中提供了編輯9-Patch圖片的工具,在tools目錄下draw9patch.bat,能夠立刻看到編輯后的拉伸效果,也可以直接用其他圖片編輯工具編輯,但是看不到效果。?
2.4 不同的layout?
Android手機(jī)屏幕大小不一,有480x320, 640x360, 800x480……?
怎樣才能讓Application自動適應(yīng)不同的屏幕呢??
其實(shí)很簡單,只需要在res目錄下創(chuàng)建不同的layout文件夾,比如:layout-640x360、layout-800x480……所有的layout文件在編譯之后都會寫入R.java里,而系統(tǒng)會根據(jù)屏幕的大小自己選擇合適的layout進(jìn)行使用。
總結(jié):最好在mainifest里面添加
<!--對于很高的分辨率,除采用相應(yīng)的圖片外,還需要加上如下配置,來更好的適配屏幕 -->?
? ? <supports-screens?
? ? ? ? android:smallScreens="true"?
? ? ? ? android:normalScreens="true"?
? ? ? ? android:largeScreens="true"?
? ? ? ? android:anyDensity="true" />
?
---------------------------------------------------------------------------------------------------------------------------------------------------
android從2.1版本開始drawble分為drawable-mdpi、drawable-ldpi、drawable-hdpi三個,這三個主要是為了支持多分辨率。
drawable- hdpi、drawable- mdpi、drawable-ldpi的區(qū)別:
(1)drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320)
系統(tǒng)會根據(jù)機(jī)器的分辨率來分別到這幾個文件夾里面去找對應(yīng)的圖片。
在開發(fā)程序時為了兼容不同平臺不同屏幕,建議各自文件夾根據(jù)需求均存放不同版本圖片。
Aphone一般到drawable-hdpi去取圖片,drawable-hdpi沒有圖片再到drawable-mdpi去取圖片,而后再到drawable-ldpi取圖片
Apad一般到drawable-mdpi去取圖片,drawable-hdpi沒有圖片再到drawable-ldpi去取圖片
橫屏含有drawable-land- hdpi、drawable-land- mdpi、drawable-land-ldpi的區(qū)別:
Aphone一般到drawable-land-hdpi去取圖片,drawable-land-hdpi沒有圖片再到drawable-land-mdpi去取圖片,而后再到drawable-land-ldpi取圖片,而后才會到drawable-hdpi去取圖片,drawable-hdpi沒有圖片再到drawable-mdpi去取圖片,而后再到drawable-ldpi取圖片
Apad一般到drawable-land-mdpi去取圖片,drawable-land-hdpi沒有圖片再到drawable-land-ldpi去取圖片,而后才會到drawable-mdpi去取圖片,drawable-hdpi沒有圖片再到drawable-ldpi去取圖片
轉(zhuǎn)載于:https://www.cnblogs.com/lteal/p/4516835.html
總結(jié)
以上是生活随笔為你收集整理的android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。