關於Android分辨率適配,這個是Android開發很頭疼的一個問題,也需要花費相當一部分開發時間處理的一個問題,往往一個界面怎么適配就得想半天,特別是新手,也經常有人問我是怎么適配分辨率的,我也不能幾句話說清楚,自己也在研究中。
其實,我覺得分辨率適配,不只是研發單方面的事情,與產品、UI設計師也有很大關聯。首先產品必須了解一點Android布局以及分辨率適配的知識,設計的界面布局可以盡量簡潔一點,效果圖界面顯示效果盡量稀疏一點,考慮到各個尺寸的手機每個界面的顯示情況。其次,UI設計師設計時,也最好先定義一些級別的尺寸,例如一個應用的所有文字大小只有6個級別,所有界面的設計都盡量在這6個級別中選取,不要每個界面文字都不同,這樣終端如果在配置文件里配置文字大小,就只需要6個配置了,另外,按鈕背景等的切圖,能不使用顏色漸變就不使用顏色漸變,這樣終端可以使用.9.png的圖片,既減小apk的尺寸,又節約應用內存。
分辨率適配必須了解的知識:
Supporting Multiple Screens :http://wiki.eoeandroid.com/Supporting_Multiple_Screens
Providing Resources :http://wiki.eoeandroid.com/Providing_Resources
我覺得分辨率適配的主要的幾種方式:
1、通過配置文件適配分辨率:
控件尺寸,我覺得可以以屏幕寬度作為參考,一般手機屏幕比例差不多是320*480,如果一個控件的高度大約是屏幕總高度的0.1,就就差不多是寬度的0.1*1.5倍。
例如,文字大小,可以以屏幕寬度做參考,定義幾個級別的大小(sw為屏幕寬度):
<dimen name="screen_h_0_02">9.6dp</dimen> <dimen name="screen_h_0_04">19.2dp</dimen> <dimen name="screen_h_0_06">28.8dp</dimen> <dimen name="screen_h_0_08">38.4dp</dimen> <dimen name="screen_h_0_1">48dp</dimen> <!-- sw*0.15 --> <dimen name="screen_h_0_2">96dp</dimen> <dimen name="screen_h_0_3">144dp</dimen> <dimen name="screen_h_0_4">192dp</dimen> <dimen name="screen_h_0_5">240dp</dimen> <dimen name="screen_h_0_6">288dp</dimen> <dimen name="screen_h_0_7">336dp</dimen> <dimen name="screen_h_0_8">384dp</dimen> <dimen name="screen_w_0_1">32dp</dimen> <dimen name="screen_w_0_2">64dp</dimen> <dimen name="screen_w_0_3">96dp</dimen> <dimen name="screen_w_0_4">128dp</dimen> <dimen name="screen_w_0_5">160dp</dimen> <dimen name="screen_w_0_6">162dp</dimen> <dimen name="screen_w_0_7">224dp</dimen> <dimen name="screen_w_0_8">256dp</dimen> <dimen name="screen_w_0_9">288dp</dimen> <dimen name="screen_w">320dp</dimen> <!-- 文字 --> <!-- 0.030*sw,列表3級 --> <dimen name="com_textsize_small">9.6dp</dimen> <!-- 0.042*sw,列表2級 --> <dimen name="com_textsize_medium_small">13.4dp</dimen> <!-- 0.049*sw,列表1級 --> <dimen name="com_textsize_medium">15.7dp</dimen> <!-- 0.059*sw,標題 --> <dimen name="com_textsize_medium_large">18.9dp</dimen> <!-- 0.074*sw,特大 --> <dimen name="com_textsize_large">23.7dp</dimen> <!-- 按鈕 --> <!-- 0.081*sw,純文字 --> <dimen name="com_btn_h_medium_small">26dp</dimen> <!-- 0.100*sw,短按鈕 --> <dimen name="com_btn_h_medium">32dp</dimen> <!-- 0.125*sw,長按鈕 --> <dimen name="com_btn_h_medium_large">40dp</dimen> <!-- 0.144*sw,特大 --> <dimen name="com_btn_h_large">46dp</dimen> <!-- 間距 --> <!-- 0.025*sw --> <dimen name="com_padding_small">8dp</dimen> <!-- 0.031*sw,activity padding --> <dimen name="com_padding_medium_small">10dp</dimen> <!-- 0.050*sw,上邊距 --> <dimen name="com_padding_medium">16dp</dimen> <!-- 0.069*sw,模塊間距 --> <dimen name="com_padding_medium_large">22.1dp</dimen> <!-- 0.094*sw,特大 --> <dimen name="com_padding_large">30.1dp</dimen>
......
2.代碼控制