1 Android手機目前常見的分辨率
1.1 手機常見分辨率:
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 标清
1080p 1920*1080 高清
手機:
iphone 4/4s 960*640 (3:2)
iphone5 1136*640
小米1 854*480(FWVGA)
小米2 1280*720
1.2 分辨率對應DPI
"HVGA mdpi"
"WVGA hdpi "
"FWVGA hdpi "
"QHD hdpi "
"720P xhdpi"
"1080P xxhdpi "
2 螢幕适配的注意事項
2.1 基本設定
2.1.1 AndroidManifest.xml設定
在中Menifest中添加子元素
android:anyDensity="true"時,應用程式安裝在不同密度的終端上時,程式會分别加載xxhdpi、xhdpi、hdpi、mdpi、ldpi檔案夾中的資源。
相反,如果設為false,即使在檔案夾下擁有相同資源,應用不會自動地去相應檔案夾下尋找資源:
1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三個檔案夾中有同一張圖檔資源的不同密度表示,那麼系統會去加載drawable_mdpi檔案夾中的資源;
2) 如果drawable-hpdi中有高密度圖檔,其它兩個檔案夾中沒有對應圖檔資源,那麼系統會去加載drawable-hdpi中的資源,其他同理;
3) 如果drawable-hdpi,drawable-mdpi中有圖檔資源,drawable-ldpi中沒有,系統會加載drawable-mdpi中的資源,其他同理,使用最接近的密度級别。
2.1.2 橫屏豎屏目錄區分
1) drawable
a) drawable-hdpi該圖檔即适用于橫屏,也适用于豎屏;
b) drawable-land-hdpi,當螢幕為橫屏,且為高密度時,加載此檔案夾的資源;
c) drawable-port-hdpi,當螢幕為豎屏,且為高密度時,加載此檔案夾中的資源。其他同理。
2) layout
在res目錄下建立layout-port和layout-land兩個目錄,裡面分别放置豎屏和橫屏兩種布局檔案,以适應對橫屏豎屏自動切換。
2.2 多螢幕适配的4條黃金原則
1) 在layout檔案中設定控件尺寸時應采用fill_parent、wrap_content、match_parent和dp;
wrap_content,match_parent或dp比px更好,文字大小應該使用sp來定義。
2) 在程式的代碼中不要出現具體的像素值,在dimens.xml中定義;
為了使代碼簡單,android内部使用pix為機關表示控件的尺寸,但這是基于目前螢幕基礎上的。為了适應多種螢幕,android建議開發者不要使用具體的像素來表示控件尺寸。
3) 不使用AbsoluteLayout(android1.5已廢棄) ,可以使用RelativeLayout替代;
4) 對不同的螢幕提供合适大小的圖檔。
不同大小螢幕用不同大小的圖檔,low:medium:high:extra-high圖檔大小的比例為3:4:6:8;舉例來說,對于中等密度(medium)的螢幕你的圖檔像素大小為48×48,那麼低密度(low)螢幕的圖檔大小應為36×36,高(high)的為72×72,extra-high為96×96。
2.3 使用9-patch PNG圖檔
使用圖檔資源時,如果出現拉伸,因為圖檔處理的原因,會變形,導緻界面走形。9-patch PNG圖檔也是一種标準的PGN圖檔,在原生PNG圖檔四周空出一個像素間隔,用來辨別PNG圖檔中哪些部分可以拉伸、哪些不可以拉伸、背景上的邊框位置等。
“上、左”定義可拉伸區域
“右、下”定義顯示區域,如果用到完整填充的背景圖,建議不要通過android:padding來設定邊距,而是通過9-patch方式來定義。
Android SDK中提供了編輯9-Patch圖檔的工具,在tools目錄下draw9patch.bat,能夠立刻看到編輯後的拉伸效果,也可以直接用其他圖檔編輯工具編輯,但是看不到效果。
2.4 不同的layout
Android手機螢幕大小不一,有480x320, 640x360, 800x480……
怎樣才能讓Application自動适應不同的螢幕呢?
其實很簡單,隻需要在res目錄下建立不同的layout檔案夾,比如:layout-640x360、layout-800x480……所有的layout檔案在編譯之後都會寫入R.java裡,而系統會根據螢幕的大小自己選擇合适的layout進行使用。