講到安卓開發(fā)過程中的多屏幕機制哲泊,比如安卓手機商那么多手機出來,然后手機還屏幕不一樣的催蝗,高清程度也不一樣的切威,然而我們偉大的谷歌給了很多便利的地方,請認(rèn)真看下面解說吧
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ù)物理尺寸的大小準(zhǔn)備5套布局:
layout(放一些通用布局xml文件枝恋,比如界面頂部和底部的布局创倔,不會隨著屏幕大小變化,類似windos窗口的title bar),
layout-small(屏幕尺寸小于3英寸左右的布局)焚碌,
layout-normal(屏幕尺寸小于4.5英寸左右)畦攘,
layout-large(4英寸-7英寸之間),
layout-xlarge(7-10英寸之間)
2)圖片資源方面
需要根據(jù)dpi值準(zhǔn)備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)自動縮放圖片尺寸和這個圖片的坐標(biāo)。具體解釋一下系統(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)該為最小屏幕寬度標(biāo)識符設(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é)問