日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)

發(fā)布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(1)drawable-hdpi里面存放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)

  (2)drawable-mdpi里面存放中等分辨率的圖片,如HVGA (320x480)

  (3)drawable-ldpi里面存放低分辨率的圖片,如QVGA (240x320)


ldpi:240x320

mdpi:320x480 hdpi:480x800、480x854 xhdpi:至少960*720 xxhdpi:1280×720

android 自適應(yīng) 多屏幕支持 1、屏幕相關(guān)概念
1.1分辨率
是指屏幕上有橫豎各有多少個像素
1.2屏幕尺寸
指的是手機實際的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸
android將屏幕大小分為四個級別(small,normal,large,and extra large)。
1.3屏幕密度
每英寸像素數(shù)
手機可以有相同的分辨率,但屏幕尺寸可以不相同,
Diagonal pixel表示對角線的像素值(=),DPI=933/3.7=252
android將實際的屏幕密度分為四個通用尺寸(low,medium,high,and extra high)
一般情況下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi
對于屏幕來說,dpi越大,屏幕的精細度越高,屏幕看起來就越清楚
1.4密度無關(guān)的像素(Density-independent pixel——dip)
dip是一種虛擬的像素單位
dip和具體像素值的對應(yīng)公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)
當你定義應(yīng)用的布局的UI時應(yīng)該使用dp單位,確保UI在不同的屏幕上正確顯示。

手機屏幕分類和像素密度的對應(yīng)關(guān)系如表1所示

手機尺寸分布情況(http://developer.android.com/resources/dashboard/screens.html)如圖所示,

目前主要是以分辨率為800*480和854*480的手機用戶居多
從以上的屏幕尺寸分布情況上看,其實手機只要考慮3-4.5寸之間密度為1和1.5的手機

2、android多屏幕支持機制
Android的支持多屏幕機制即用為當前設(shè)備屏幕提供一種合適的方式來共同管理并解析應(yīng)用資源。
Android平臺中支持一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合適資源。
指定大小(size-specific)的合適資源是指small, normal, large, and xlarge。
指定密度(density-specific)的合適資源,是指ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high).
Android有個自動匹配機制去選擇對應(yīng)的布局和圖片資源
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ù)需求均存放不同版本圖片。

3、AndroidManifest.xml 配置
android從1.6和更高,Google為了方便開發(fā)者對于各種分辨率機型的移植而增加了自動適配的功能
<supports-screens
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"]
如果在聲明不支持的小屏幕,而當前屏幕尺寸是smaller的話,系統(tǒng)也使用尺寸為("normal")和密度為("medium)顯示
如果應(yīng)用程序能在小屏幕上正確縮放(最低是small尺寸或最小寬度320dp),那就不需要用到本屬性。否則,就應(yīng)該為最小屏幕寬度標識符設(shè)置本屬性
來匹配應(yīng)用程序所需的最小尺寸。


4、Android提供3種方式處理屏幕自適應(yīng)
4.1預(yù)縮放的資源(基于尺寸和密度去尋找圖片)
1)如果找到相應(yīng)的尺寸和密度,則利用這些圖片進行無縮放顯示。
2)如果沒法找到相應(yīng)的尺寸,而找到密度,則認為該圖片尺寸為 "medium",利用縮放顯示這個圖片。
3)如果都無法匹配,則使用默認圖片進行縮放顯示。默認圖片默認標配 "medium" (160)。
4.2自動縮放的像素尺寸和坐標(密度兼容)
1)如果應(yīng)用程序不支持不同密度android:anyDensity="false",系統(tǒng)自動縮放圖片尺寸和這個圖片的坐標。
2)對于預(yù)縮放的資源,當android:anyDensity="false",也不生效。
3)android:anyDensity="false",只對密度兼容起作用,尺寸兼容沒效果
4.3兼容更大的屏幕和尺寸(尺寸兼容)
1)對于你在聲明不支持的大屏幕,而這個屏幕尺寸是normal的話,系統(tǒng)使用尺寸為 ("normal")和密度為("medium)顯示。
2.)對于你在聲明不支持的大屏幕,而這個屏幕尺寸是larger的話,系統(tǒng)同樣使用尺寸為("normal")和密度為("medium)顯示,
不過會出現(xiàn)一層黑色的背景。

5、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

6、在代碼中獲取屏幕像素、屏幕密度
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕寬度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

7、 一般多分辨率處理方法及其缺點
7.1 圖片縮放
基于當前屏幕的精度,平臺自動加載任何未經(jīng)縮放的限定尺寸和精度的圖片。如果圖片不匹配,平臺會加載默認資源并且在放大或者縮小之后可以滿足當前界面的顯示要求。例如,當前為高精度屏幕,平臺會加載高精度資源(如HelloAndroid中drawable-hdpi 中的位圖資源),如果沒有,平臺會將中精度資源縮放至高精度,導致圖片顯示不清晰。
7.2 自動定義像素尺寸和位置
如果程序不支持多種精度屏幕,平臺會自動定義像素絕對位置和尺寸值等,這樣就能保證元素能和精度160 的屏幕上一樣能顯示出同樣尺寸的效果。例如,要讓WVGA 高精度屏幕和傳統(tǒng)的HVGA 屏幕一樣顯示同樣尺寸的圖片,當程序不支持時,系統(tǒng)會對程序慌稱屏幕分辨率為320×480,在(10,10)到(100,100)的區(qū)域內(nèi)繪制圖形完成之后,系統(tǒng)會將圖形放大到(15,15)到(150,150)的屏幕顯示區(qū)域。
7.3 兼容更大尺寸的屏幕
當前屏幕超過程序所支持屏幕的上限時,定義supportsscreens元素,這樣超出顯示的基準線時,平臺在此顯示黑色的背景圖。例如,WVGA 中精度屏幕上,如程序不支持這樣的大屏幕,系統(tǒng)會謊稱是一個320×480 的,多余的顯示區(qū)域會被填充成黑色。
7.4 采用OpenGL 動態(tài)繪制圖片
Android 底層提供了OpenGL 的接口和方法,可以動態(tài)繪制圖片,但是這種方式對不熟悉計算機圖形學的開發(fā)者來講是一個很大的挑戰(zhàn)。一般開發(fā)游戲,采用OpenGL 方式。
7.5 多個apk 文件
Symbian 和傳統(tǒng)的J2ME 就是采用這種方式,為一款應(yīng)用提供多個分辨率版本,用戶根據(jù)自己的需求下載安裝相應(yīng)的可執(zhí)行文件。針對每一種屏幕單獨開發(fā)應(yīng)用程序不失為一種好方法,但是目前Google Market 對一個應(yīng)用程序多個分辨率版本的支持還不完善,開發(fā)者還是需要盡可能使用一個apk 文件適應(yīng)多個分辨率。


本文歡迎轉(zhuǎn)載,但請注明作者與出處:

作者:流星

出處:http://blog.sina.com.cn/staratsky

總結(jié)

以上是生活随笔為你收集整理的res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。