1 Android手機目前常見的分辨率
1.1 手機常見分辨率:
4:3
VGA 640480 (Video Graphics Array)
QVGA 320240 (Quarter VGA)
HVGA 480320 (Half-size VGA)
SVGA 800600 (Super VGA)
5:3
WVGA 800*480 (Wide VGA)
16:9
FWVGA 854480 (Full Wide VGA)
HD 19201080 High Definition
QHD 960540
720p 1280720 標清
1080p 1920*1080 高清
手機:
iphone 4/4s 960*640 (3:2)
iphone5 1136*640
小米1 854*480(FWVGA)
小米2 1280*720
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)文件夾下尋找資源:
- 如果drawable-hdpi酵幕、drawable-mdpi扰藕、drawable-ldpi三個文件夾中有同一張圖片資源的不同密度表示,那么系統(tǒng)會去加載drawable_mdpi文件夾中的資源芳撒;
- 如果drawable-hpdi中有高密度圖片邓深,其它兩個文件夾中沒有對應(yīng)圖片資源未桥,那么系統(tǒng)會去加載drawable-hdpi中的資源,其他同理芥备;
- 如果drawable-hdpi,drawable-mdpi中有圖片資源冬耿,drawable-ldpi中沒有,系統(tǒng)會加載drawable-mdpi中的資源门躯,其他同理淆党,使用最接近的密度級別。
2.1.2 橫屏豎屏目錄區(qū)分
1) drawable
a) drawable-hdpi該圖片即適用于橫屏讶凉,也適用于豎屏染乌;
b) drawable-land-hdpi,當屏幕為橫屏,且為高密度時懂讯,加載此文件夾的資源荷憋;
c) drawable-port-hdpi,當屏幕為豎屏,且為高密度時褐望,加載此文件夾中的資源勒庄。其他同理。
2) layout
在res目錄下建立layout-port和layout-land兩個目錄瘫里,里面分別放置豎屏和橫屏兩種布局文件实蔽,以適應(yīng)對橫屏豎屏自動切換。
2.2 多屏幕適配的4條黃金原則 - 在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來定義宣增。 - 在程序的代碼中不要出現(xiàn)具體的像素值,在dimens.xml中定義矛缨;
為了使代碼簡單爹脾,android內(nèi)部使用pix為單位表示控件的尺寸,但這是基于當前屏幕基礎(chǔ)上的箕昭。為了適應(yīng)多種屏幕誉简,android建議開發(fā)者不要使用具體的像素來表示控件尺寸。 - 不使用AbsoluteLayout(android1.5已廢棄) 盟广,可以使用RelativeLayout替代闷串;
- 對不同的屏幕提供合適大小的圖片。
不同大小屏幕用不同大小的圖片筋量,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)拉伸琼梆,因為圖片處理的原因,會變形窿吩,導(dǎo)致界面走形茎杂。9-patch PNG圖片也是一種標準的PGN圖片,在原生PNG圖片四周空出一個像素間隔纫雁,用來標識PNG圖片中哪些部分可以拉伸煌往、哪些不可以拉伸、背景上的邊框位置等轧邪。
“上刽脖、左”定義可拉伸區(qū)域
“右、下”定義顯示區(qū)域忌愚,如果用到完整填充的背景圖曲管,建議不要通過android:padding來設(shè)置邊距,而是通過9-patch方式來定義硕糊。
Android SDK中提供了編輯9-Patch圖片的工具院水,在tools目錄下draw9patch.bat,能夠立刻看到編輯后的拉伸效果癌幕,也可以直接用其他圖片編輯工具編輯,但是看不到效果昧穿。****
2.4 不同的layout
Android手機屏幕大小不一勺远,有480x320, 640x360, 800x480……
怎樣才能讓Application自動適應(yīng)不同的屏幕呢?
其實很簡單时鸵,只需要在res目錄下創(chuàng)建不同的layout文件夾胶逢,比如:layout-640x360、layout-800x480……所有的layout文件在編譯之后都會寫入R.Java里饰潜,而系統(tǒng)會根據(jù)屏幕的大小自己選擇合適的layout進行使用初坠。
2.5 測試驗證
一般使用AVD Manager創(chuàng)建多個不同大小的模擬器,如果條件具備彭雾,也可以直接用真機測試碟刺,這個比較靠譜。
3 參考資料
http://blog.csdn.net/guozh/article/details/8954994
http://my.eoe.cn/cainiao1/archive/2348.html(皇馬船長)