android適配和新文件及作用

1.術語和概念

術語

說明

備註

Screen size(屏幕尺寸)

指的是手機實際的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸

摩托羅拉milestone手機是3.7英寸

Aspect Ratio(寬高比率)

指的是實際的物理尺寸寬高比率,分爲long和nolong

Milestone是16:9,屬於long

Resolution(分辨率)

和電腦的分辨率概念一樣,指手機屏幕縱、橫方向像素個數

Milestone是854*480

DPI(dot per inch)

每英寸像素數,如120dpi,160dpi等,假設QVGA(320*240)分辨率的屏幕物理尺寸是(2英寸*1.5英寸),dpi=160

可以反映屏幕的清晰度,用於縮放UI的

Density(密度)

屏幕裏像素值濃度,resolution/Screen size可以反映出手機密度,

Density-independent pixel (dip)

指的是邏輯密度計算單位,dip和具體像素值的對應公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)

2. DPI值計算

比如:計算WVGA(800*480)分辨率,3.7英寸的密度DPI,如圖1所示

               圖1

Diagonal pixel表示對角線的像素值(=),DPI=933/3.7=252

3.手機屏幕的分類

3.1根據手機屏幕密度(DPI)或屏幕尺寸大小分爲以下3類,如圖2所示

                        

                          圖2

3. 2手機屏幕分類和像素密度的對應關係如表1所示:

Low density (120), ldpi

Medium density (160), mdpi

High density (240), hdpi

Small screen

QVGA (240x320)

Normal screen

WQVGA400 (240x400)WQVGA432 (240x432)

HVGA (320x480)

WVGA800 (480x800)WVGA854 (480x854)

Large screen

WVGA800* (480x800)WVGA854* (480x854)

                                      表1

3.3手機尺寸分佈情況(http://developer.android.com/resources/dashboard/screens.html)如圖3所示,目前主要是以分辨率爲800*480和854*480的手機用戶居多


                                                        圖3

   從以上的屏幕尺寸分佈情況上看,其實手機只要考慮3-4.5寸之間密度爲1和1.5的手機

4 UI設計

從開發角度講,應用程序會根據3類Android手機屏幕提供3套UI佈局文件,但是相應界面圖標也需要提供3套,如表2所示

Icon Type

Standard Asset Sizes (in Pixels), for Generalized Screen Densities

Low density screen (ldpi)

Medium density screen (mdpi)

High density screen (hdpi)

Launcher

36 x 36 px

48 x 48 px

72 x 72 px

Menu

36 x 36 px

48 x 48 px

72 x 72 px

Status Bar

24 x 24 px

32 x 32 px

48 x 48 px

Tab

24 x 24 px

32 x 32 px

48 x 48 px

Dialog

24 x 24 px

32 x 32 px

48 x 48 px

List View

24 x 24 px

32 x 32 px

48 x 48 px

                                        表2

5 如何做到自適應屏幕大小呢?

1)界面佈局方面

   需要根據物理尺寸的大小準備5套佈局,layout(放一些通用佈局xml文件,比如界面中頂部和底部的佈局,不會隨着屏幕大小變化,類似windos窗口的title bar),layout-small(屏幕尺寸小於3英寸左右的佈局),layout-normal(屏幕尺寸小於4.5英寸左右),layout-large(4英寸-7英寸之間),layout-xlarge(7-10英寸之間)

2)圖片資源方面

  需要根據dpi值準備5套圖片資源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi

Android有個自動匹配機制去選擇對應的佈局和圖片資源

 

四種屏幕尺寸分類:: small, normal, large, and xlarge
四種密度分類: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是從 Android 2.2 (API Level 8)纔開始增加的分類.
xlarge是從Android 2.3 (API Level 9)纔開始增加的分類.
DPI是“dot per inch”的縮寫,每英寸像素數。

一般情況下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

 

 

兩種獲取屏幕分辨率信息的方法:

DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//這裏得到的像素值是設備獨立像素dp

//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 這樣獲得的參數信息不正確,不要使用這種方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。這個得到的寬和高是空的。
如果需要爲Android pad定製資源文件,則res目錄下的目錄可能爲:
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-nodpi
drawable-nodpi-1024×600
drawable-nodpi-1280×800
drawable-nodpi-800×480
values
values-ldpi
values-mdpi
values-hdpi
values-xhdpi
values-nodpi
values-nodpi-1024×600
values-nodpi-1280×800
values-nodpi-800×480

上述內容轉載:http://blog.csdn.net/liguangzhenghi/article/details/7244271
我是2011年開始接觸的android,那個時候根本就沒有這麼文件夾這麼多的說法,我今天加4.4的工程的時候出現了這幾個文件(據瞭解:3.2以後增加的),做也如下解釋:
menu:對應硬件menu響應內容,但是現在android不是已經對外公佈建議所有的應用程序使用actionbar,但是還有這個文件夾,搞不懂。
values-sw600dp: sw是small least width,大概意思就是在最小寬度600以上纔會生效,後面的值我們可以自己更改。
values-sw720dp-land或者port:主要體現在後面兩個單詞的卻別,一直找不到很合理的解釋;我剛剛看官方的api,慢慢翻譯得到了一個句號:Some layouts work well in both landscape and portrait orientations, but most of them can benefit from adjustments. In the News Reader sample app, here is how the layout behaves in each screen size and orientation;
大概意思就是我們在開發工程中,會遇到橫屏和豎屏的情況,所以我們會根據這個後綴名去引用不同佈局文件。

但是還是不知道是什麼意思,希望看到文章的朋友可以留言一幫忙解釋一下!
values-v11或values-v8:這個一般應用到主題上,因爲一些低版本的手機不支持高版本的主題設置,所以需要這個文件控制一下
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章