android 常見(jiàn)分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕適配注意事項(xiàng)

1 Android手機(jī)目前常見(jiàn)的分辨率

1.1 手機(jī)常見(jiàn)分辨率:

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 高清

手機(jī):

iphone 4/4s??? 960*640 (3:2)

iphone5???????? 1136*640

小米1???????????? 854*480(FWVGA)

小米2???????????? 1280*720

1.2 分辨率對(duì)應(yīng)DPI

"HVGA??? mdpi"

"WVGA?? hdpi "

"FWVGA hdpi "

"QHD????? hdpi "

"720P???? xhdpi"

"1080P?? xxhdpi "

2?屏幕適配的注意事項(xiàng)

2.1 基本設(shè)置

2.1.1 AndroidManifest.xml設(shè)置

在中Menifest中添加子元素

android:anyDensity="true"時(shí),應(yīng)用程序安裝在不同密度的終端上時(shí),程序會(huì)分別加載xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夾中的資源。

相反,如果設(shè)為false,即使在文件夾下?lián)碛邢嗤Y源,應(yīng)用不會(huì)自動(dòng)地去相應(yīng)文件夾下尋找資源:

1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三個(gè)文件夾中有同一張圖片資源的不同密度表示,那么系統(tǒng)會(huì)去加載drawable_mdpi文件夾中的資源;

2) 如果drawable-hpdi中有高密度圖片,其它兩個(gè)文件夾中沒(méi)有對(duì)應(yīng)圖片資源,那么系統(tǒng)會(huì)去加載drawable-hdpi中的資源,其他同理;

3) 如果drawable-hdpi,drawable-mdpi中有圖片資源,drawable-ldpi中沒(méi)有,系統(tǒng)會(huì)加載drawable-mdpi中的資源,其他同理,使用最接近的密度級(jí)別。

2.1.2 橫屏豎屏目錄區(qū)分

1) drawable

a) drawable-hdpi該圖片即適用于橫屏,也適用于豎屏;

b) drawable-land-hdpi,當(dāng)屏幕為橫屏,且為高密度時(shí),加載此文件夾的資源;

c) drawable-port-hdpi,當(dāng)屏幕為豎屏,且為高密度時(shí),加載此文件夾中的資源。其他同理。

2) layout

在res目錄下建立layout-port和layout-land兩個(gè)目錄,里面分別放置豎屏和橫屏兩種布局文件,以適應(yīng)對(duì)橫屏豎屏自動(dòng)切換。

2.2?多屏幕適配的4條黃金原則

1) 在layout文件中設(shè)置控件尺寸時(shí)應(yīng)采用fill_parent、wrap_content、match_parent和dp;

具體來(lái)說(shuō),設(shè)置view的屬性android:layout_width和android:layout_height的值時(shí),wrap_content,match_parent或dp比px更好,文字大小應(yīng)該使用sp來(lái)定義。

2) 在程序的代碼中不要出現(xiàn)具體的像素值,在dimens.xml中定義;

為了使代碼簡(jiǎn)單,android內(nèi)部使用pix為單位表示控件的尺寸,但這是基于當(dāng)前屏幕基礎(chǔ)上的。為了適應(yīng)多種屏幕,android建議開(kāi)發(fā)者不要使用具體的像素來(lái)表示控件尺寸。

3) 不使用AbsoluteLayout(android1.5已廢棄) ,可以使用RelativeLayout替代;

4) 對(duì)不同的屏幕提供合適大小的圖片。

不同大小屏幕用不同大小的圖片,low:medium:high:extra-high圖片大小的比例為3:4:6:8;舉例來(lái)說(shuō),對(duì)于中等密度(medium)的屏幕你的圖片像素大小為48×48,那么低密度(low)屏幕的圖片大小應(yīng)為36×36,高(high)的為72×72,extra-high為96×96。

2.3?使用9-patch PNG圖片

使用圖片資源時(shí),如果出現(xiàn)拉伸,因?yàn)閳D片處理的原因,會(huì)變形,導(dǎo)致界面走形。9-patch PNG圖片也是一種標(biāo)準(zhǔn)的PGN圖片,在原生PNG圖片四周空出一個(gè)像素間隔,用來(lái)標(biāo)識(shí)PNG圖片中哪些部分可以拉伸、哪些不可以拉伸、背景上的邊框位置等。

“上、左”定義可拉伸區(qū)域

“右、下”定義顯示區(qū)域,如果用到完整填充的背景圖,建議不要通過(guò)android:padding來(lái)設(shè)置邊距,而是通過(guò)9-patch方式來(lái)定義。

Android SDK中提供了編輯9-Patch圖片的工具,在tools目錄下draw9patch.bat,能夠立刻看到編輯后的拉伸效果,也可以直接用其他圖片編輯工具編輯,但是看不到效果。

2.4?不同的layout

Android手機(jī)屏幕大小不一,有480x320, 640x360, 800x480……

怎樣才能讓Application自動(dòng)適應(yīng)不同的屏幕呢?

其實(shí)很簡(jiǎn)單,只需要在res目錄下創(chuàng)建不同的layout文件夾,比如:layout-640x360、layout-800x480……所有的layout文件在編譯之后都會(huì)寫(xiě)入R.java里,而系統(tǒng)會(huì)根據(jù)屏幕的大小自己選擇合適的layout進(jìn)行使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容