Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android屏幕分類與屏幕相關參數定義

android屏幕分類與屏幕相關參數定義

編輯:關於Android編程

android設備運行在各種不同的屏幕中,這些屏幕有著不同的screen sizes(屏幕大小)和screen densities(屏幕密度)。screen sizes表示屏幕的實際物理大小,比如5寸手機,7寸平板,8寸平板。而screen densities表示屏幕的像素密度,比如同樣5寸的手機,有720p的,有1080p的。screen sizes和screen densities從兩個維度表示了屏幕的屬性,他們互不影響。


Screen Sizes

屏幕的真實物理尺寸,以屏幕的對角線測量,一般以inch(寸)為單位,比如5寸手機,7寸平板。如下圖所示:

\

根據不同的屏幕大小,可以把屏幕大小分為下面幾種類型:

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KCnNtYWxsbm9ybWFsbGFyZ2V4bGFyZ2UKPGltZyBzcmM9"/uploadfile/Collfiles/20140522/2014052209133874.jpg" alt="\">
這種分類方式是以第一部android手機G1為基准劃分的,G1屬於normal分類。隨著android手機屏幕的尺寸大小越來越豐富,這種分類方式就顯得簡單粗暴,無法滿足分類的精確度(比如5寸手機和7寸平板同屬於large分類)。所以在android3.2以後就沒有使用這種分類方式了,新的分類方式通過可用屏幕寬度來定義,在工程的資源文件中(如layout)使用,下面是一些例子: layout-sw600dplayout-sw720dp
values-sw340dp 這些分類的定義在後面會詳細講解,現在大家先有個概念。

Screen Densities

在講screen densities前有幾個概念需要理解:px,ppi,dpi,resolution。

1. px

px就是大家經常說的像素(pixel),像素是圖像顯示的基本單位,pixel由picture和element兩個單詞組合而成,有圖像元素的意思,每個這樣的信息元素是一個抽象的采樣,經常以一個點或者方塊表示。

2. ppi

ppi(pixels per inch)表示圖像中每英寸的像素數,ppi會影響屏幕輸出的質量,高的ppi在每英寸下包含的像素數多,顯示效果更好。對於一張100 x 100像素的圖片,100ppi的輸出顯示的大小為1" x 1"(1"表示1寸),在10ppi的輸出顯示的大小為10" x 10"。也就是說,同一張圖片在不同ppi下顯示的大小不一樣,ppi越大,圖片顯得越小。

3. dpi

dpi(dots per inch)跟ppi是比較容易混淆的兩個概念,dpi表示屏幕每英寸物理顯示點的個數,物理顯示點是屏幕的最小顯示單元。假如圖像輸出與屏幕的顯示點一一對應,即一個pixel在一個dot上顯示,那麼dpi的值等於ppi。但如果用一個1200dpi的屏幕全屏輸出一個300ppi的圖像,那這時每個pixel由16個dots組成。(dpi與ppi的關系)

4. resolution

resolution表示屏幕分辨率,以像素為單位表示,如屏幕分辨率為1920 x 1080,表示屏幕x,y方向分別可以顯示1920和1080個像素點。分辨率在應用實現多屏適配的時候不起直接作用,多屏適配只與screen sizes和screen densities相關。
對以上的幾個概念有了初步認識後,下面我們來看screen densities的分類,在android中,screen densities是根據dpi來進行分類的,如下: ldpi(low)~120dpimdpi(medium)~160dpihdpi(high)~240dpixhdpi(extra high)~320dpixxhdpi(extra extra high)~480dpixxxhdpi (extra extra extra high)~640dpi...... \
為了簡單,android根據dpi的值對screen densities進行了分類,每種分類包含了一個區域的dpi值,如上圖所示。這種分類方式也是以第一部android手機G1為基准劃分的,G1的dpi為160dpi,屬於mdpi的分類。
下面ppi的計算公式,ppi是pixels per inch的意思,設備的ppi用屏幕對角線中每inch的pixel數來表示,

\

比如nexus5手機,分辨率為1920 x 1080,屏幕大小為4.95寸,那麼ppi的計算如下:

\

那屏幕的dpi如何計算了,如果是按照定義的話,公式跟ppi的計算公式是一樣的,只需把像素數換成dot的數量,但是我們並不知道dot的數量是多少。不過,我們可以通過程序獲取設備的dpi值,代碼如下:

DisplayMetrics dm = getResources().getDisplayMetrics();
int dpi = dm.densityDpi;
通過上面代碼獲得的dpi=480,也就是說dpi不等於ppi,如果一個pixel用一個dot顯示,按道理是應該相等的,但為什麼會不等呢?這個我也還沒搞清楚。不管怎樣,要獲取屏幕的dpi,不能用計算ppi的公式去計算獲得,要從代碼中去獲取。

總結:

android設備的屏幕的差異通過兩個維度來劃分,screen sizes 和 screen densities,為了簡單,android對不同的 screen sizes 和 screen densities做了歸類。它們兩者互不影響,一個表示屏幕的真實物理大小,一個表示屏幕的像素密度,這兩者的不同組合構成了各種各樣的設備屏幕。在對android應用做多屏適配時,它們是主要考慮的因素。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved