講到安卓開發(fā)過程中的多屏幕機制,比如安卓手機商那么多手機出來,然后手機還屏幕不一樣的,高清程度也不一樣的,然而我們偉大的谷歌給了很多便利的地方,請認真看下面解說吧
sp:scaled pixels(放大像素). 主要用于字體顯示best for textsize。
dp(dip):device independent pixels(設(shè)備獨立像素). 不同設(shè)備有不同的顯示效果,這個和設(shè)備硬件有關(guān),一般我們?yōu)榱酥С諻VGA、HVGA和QVGA 推薦使用這個,不依賴像素。
values-v11代表在API 11+的設(shè)備上,用該目錄下的styles.xml代替res/values/styles.xml
values-v14代表在API 14+的設(shè)備上,用該目錄下的styles.xml代替res/values/styles.xml
其中API 11+代表android 3.0 +
其中API 14+代表android 4.0 +
800x480像素也就是在橫向位置排列有800個像素單位,縱向位置排列有480個像素單位。橫-----縱
1)界面布局方面
根據(jù)物理尺寸的大小準備5套布局:
layout(放一些通用布局xml文件,比如界面頂部和底部的布局,不會隨著屏幕大小變化,類似windos窗口的title bar),
layout-small(屏幕尺寸小于3英寸左右的布局),
layout-normal(屏幕尺寸小于4.5英寸左右),
layout-large(4英寸-7英寸之間),
layout-xlarge(7-10英寸之間)
2)圖片資源方面
需要根據(jù)dpi值準備5套圖片資源:
drawable:主要放置xml配置文件或者對分辨率要求較低的圖片
drawalbe-ldpi:低分辨率的圖片,如QVGA (240x320)
drawable-mdpi:中等分辨率的圖片,如HVGA (320x480)
drawable-hdpi:高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)
drawable-xhdpi:至少960dp x 720dp
Android有個自動匹配機制去選擇對應(yīng)的布局和圖片資源。
系統(tǒng)會根據(jù)機器的分辨率來分別到這幾個文件夾里面去找對應(yīng)的圖片。
在開發(fā)程序時為了兼容不同平臺不同屏幕,建議各自文件夾根據(jù)需求均存放不同版本圖片。
AndroidManifest.xml 配置
android從1.6和更高,Google為了方便開發(fā)者對于各種分辨率機型的移植而增加了自動適配的功能
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
3.1是否支持多種不同密度的屏幕
android:anyDensity=["true" | "false"]
如果android:anyDensity="true"
指應(yīng)用程序支持不同密度,會根據(jù)屏幕的分辨率自動去匹配。
如果android:anyDensity="false"
應(yīng)用程序支持不同密度,系統(tǒng)自動縮放圖片尺寸和這個圖片的坐標。具體解釋一下系統(tǒng)是如何自動縮放資源的。
例如我們在hdpi,mdpi,ldpi文件夾下?lián)碛型环N資源,那么應(yīng)用也不會自動地去相應(yīng)文件夾下尋找資源,這種情況都是出現(xiàn)在高密度,以及低密度的手機上,比如說一部240×320像素的手機,
如果設(shè)置android:anyDensity="false",Android系統(tǒng)會將240 x 320(低密度)轉(zhuǎn)換為 320×480(中密度),這樣的話,應(yīng)用就會在小密度手機上加載mdpi文件中的資源。
3.2是否支持大屏幕
android:largeScreens=["true" | "false"]
如果在聲明不支持的大屏幕,而這個屏幕尺寸是larger的話,系統(tǒng)使用尺寸為("normal")和密度為("medium)顯示,
不過會出現(xiàn)一層黑色的背景。
3.3是否支持小屏幕
android:smallScreens=["true" | "false"]
如果在聲明不支持的小屏幕,而當(dāng)前屏幕尺寸是smaller的話,系統(tǒng)也使用尺寸為("normal")和密度為("medium)顯示
如果應(yīng)用程序能在小屏幕上正確縮放(最低是small尺寸或最小寬度320dp),那就不需要用到本屬性。否則,就應(yīng)該為最小屏幕寬度標識符設(shè)置本屬性
來匹配應(yīng)用程序所需的最小尺寸。
Android系統(tǒng)自動適配技巧
Android系統(tǒng)采用下面兩種方法來實現(xiàn)應(yīng)用的自動適配:
1)布局文件中定義長度的時候,最好使用wrap_content,fill_parent, 或者dp 進行描述,這樣可以保證在屏幕上面展示的時候有合適的大小
2)為不同屏幕密度的手機,提供不同的位圖資源,可以使得界面清晰無縮放。
對應(yīng)bitmap 資源來說,自動的縮放有時會造成放大縮小后的圖像變得模糊不清,這是就需要應(yīng)用為不同屏幕密度配置提供不同的資源:為高密度的屏幕提供高清晰度的圖像等。
3)不要使用AbsoluteLayout
4)像素單位都使用DIP,文本單位使用SP
更多文章請關(guān)注個人微博:@Lx_Rosen? ? 微信公眾號:U學(xué)問