術語和概念
屏幕尺寸
屏幕的物理尺寸,以屏幕的對角線長度做爲依據(好比 2.8寸, 3.5寸)。
簡而言之, Android把全部的屏幕尺寸簡化爲三大類:大,正常,和小。
程序能夠針對這三種尺寸的屏幕提供三種不一樣的佈局方案,而後系統會負責把你的佈局方案以合適的方式渲染到對應的屏幕上,這個過程是不須要程序員用代碼來干預的。
屏幕長寬比
屏幕的物理長度與物理寬度的比例。程序能夠爲制定長寬比的屏幕提供製定的素材,只須要用系統提供的資源分類符long和 notlong。
分辨率
屏幕上擁有的像素的總數。注意,雖然大部分狀況下分辨率都被表示爲「寬度×長度」,但分辨率並不意味着屏幕長寬比。在 Android系統中,程序通常並不直接處理分辨率。
密度
以屏幕分辨率爲基礎,沿屏幕長寬方向排列的像素。
密度較低的屏幕,在長和寬方向都只有比較少的像素,而高密度的屏幕一般則會有不少 ——甚至會很是很是多——像素排列在同一區域。屏幕的密度是很是重要的,舉個例子,長寬以像素爲單位定義的界面元素(好比一個按鈕),在低密度的屏幕上會 顯得很大,但在高密度的屏幕上則會顯得很小。
密度無關的像素( DIP )
指一個抽象意義上的像素,程序用它來定義界面元素。它做爲一個與實際密度無關的單位,幫助程序員構建一個佈局方案(界面元素的寬度,高度,位置)。
一個與密度無關的像素,在邏輯尺寸上,與一個位於像素密度爲 160DPI的屏幕上的像素是一致的,這也是Android平臺所假定的默認顯示設備。在運行的時候,平臺會以目標屏幕的密度做爲基準,「透明地」處理全部須要的DIP縮放操做。要把密度無關像素轉換爲屏幕像素,能夠用這樣一個簡單的公式: pixels = dips * (density / 160)。舉個例子,在 DPI爲 240的屏幕上, 1個 DIP等於 1.5個物理像素。咱們強烈推薦你用 DIP來定義你程序的界面佈局,由於這樣能夠保證你的 UI在各類分辨率的屏幕上均可以正常顯示。
php
圖表形式html
術語android |
說明程序員 |
備註app |
Screen size(屏幕尺寸)ide |
指的是手機實際的物理尺寸,好比經常使用的2.8英寸,3.2英寸,3.5英寸,3.7英寸佈局 |
摩托羅拉milestone手機是3.7英寸ui |
Aspect Ratio(寬高比率)spa |
指的是實際的物理尺寸寬高比率,分爲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 |
支持的屏幕分辨率範圍
1.5及更早版本的 Android系統,在設計的時候假定系統只會運行在一種分辨率的設備上—— HVGA( 320× 480)分辨率,尺寸爲 3.2寸。因爲系統只能工做在一種屏幕上,開發人員就能夠針對那個屏幕來編寫本身的程序,而無需去考慮程序在其餘屏幕上的顯示問題。
但自從 Android 1.6以來,系統引入了對多種尺寸、多種分辨率屏幕的支持,以此知足擁有各類配置的新平臺的運行需求。這就意味着開發人員在針對 Android 1.6或更新版系統開發程序的時候,須要爲本身的程序在多種分辨率的屏幕上良好顯示做出額外的設計。
爲了簡化程序員面在對各類分辨率時的困擾,也爲了具有各類分辨率的平臺均可以直接運行這些程序, Android平臺將全部的屏幕以密度和分辨率爲分類方式,各自分紅了三類:
·三種主要的尺寸:大,正常,小;
·三種不一樣的密度:高( hdpi),中( mdpi)和低( ldpi)。
若是須要的話,程序能夠爲各類尺寸的屏幕提供不一樣的資源(主要是佈局),也能夠爲 各類密度的屏幕提供不一樣的資源(主要是位圖)。除此之外,程序不須要針對屏幕的尺寸或者密度做出任何額外的處理。在執行的時候,平臺會根據屏幕自己的尺寸 與密度特性,自動載入對應的資源,並把它們從邏輯像素( DIP,用於定義界面佈局)轉換成屏幕上的物理像素。
下表列出了 Android平臺支持的屏幕中一些比較經常使用的型號,並顯示了系統是如何把它們分類到不一樣的屏幕配置裏的。有些屏幕分辨率並不在下面的列表上,但系統仍會把它們納入下列的某一個類型中。
低密度( 120), ldpi | 中密度( 160), mdpi | 高密度( 240), hdpi | |
小 屏幕 | · QVGA( 240× 320),2.6~ 3.0寸 | ||
普通 屏幕 | · WQVGA( 240×400), 3.2~ 3.5寸 · FWQVGA( 240×432), 3.5~ 3.8寸 |
· HVGA( 320× 480),3.0~ 3.5寸 | · WVGA( 480× 800),3.3~ 4.0寸 · FWVGA( 480×854), 3.5~ 4.0寸 |
大 屏幕 | · WVGA( 480× 800),4.8~ 5.5寸 · FWVGA( 480×854), 5.0~ 5.8寸 |
如上表所示,全部分辨率的屏幕,都圍繞在基準屏幕 周圍,而基準屏幕在分類中,爲「正常」尺寸,與「中」密度。之因此用 HVGA屏幕做爲基準屏幕,是由於全部針對 Android 1.5或更早的程序都是針對這片屏幕所寫的(由於只支持這一片),好比 T-Mobile G1。
雖然系統支持上面 9種不一樣配置 的屏幕,但你並不必定須要爲它們都提供各自不一樣的資源。系統已經提供了足夠魯棒(就是在各類惡劣環境下正常工做,對環境變化不敏感)的兼容特性,用於在各 種不一樣的屏幕上良好顯示你的程序。這在下面的文檔中會詳細描述,若是你須要更多的資料,請查看「與屏幕無關的最佳實踐」。
單位:像素
WVGA854: 854*480
WVGA800: 800*480
HVGA: 640*480
QVGA: 320*240
WQVGA432:432*240
WQVGA400:400*240
Android3.0 WXGA:800*1280
DVGA960(640x960, high density, normal screen )
QVGA (240x320, low density, small screen)
WQVGA (240x400, low density, normal screen)
FWQVGA (240x432, low density, normal screen)
HVGA (320x480, medium density, normal screen)
WVGA800 (480x800, high density, normal screen)
WVGA854 (480x854 high density, normal screen)
Android中圖標尺寸:
AndroidManifest.xml中指定圖標,名字不必定非叫icon
<application android:icon="@drawable/icon" android:label="@string/app_name">
2.0之後有三種尺寸,分別爲36*36/48*48/72*72
你會看到drawable-hdpi/drawable-ldpi/drawable-mdpi不一樣的目錄用來存儲不一樣尺寸的圖標,在AndroidManifest.xml中只須要寫@drawable/icon就能夠,它會根據屏幕分辨率去找不一樣目錄下的圖標
hdpi裏面主要放高分辨率的圖片,如WVGA (480x800),FWVGA (480x854)
mdpi裏面主要放中等分辨率的圖片,如HVGA (320x480)
ldpi裏面主要放低分辨率的圖片,如QVGA (240x320)
類型 hdpi mdpi ldpi
ICON 72*72 48*48 36*36
Notification圖標 48*48 32*32 24*24
標籤Tab圖標 48*48 32*32 24*24
icon 36*36 48*48 72*72
Android的icon尺寸
在運行時,程序爲最佳顯示效果提供了三種方法:
1.圖片縮放
基於當前屏幕的 精度,平臺自動加載任何未經縮放的限定尺寸和精度的圖片。若是圖片不匹配,平臺會加載默認資源而且在放大或者縮小以後能夠知足當前界面的顯示要求。例如, 當前爲高精度屏幕,平臺會加載高精度資源(如圖片),若是沒有,平臺會將中精度資源縮放至高精度。
2.自動定義像素尺寸和位置
若是程序不支持多種精度屏幕,平臺會自動 定義像素絕對位置和尺寸值等,這樣就能保證元素能和精度160的屏幕上同樣能顯示出一樣尺寸的效果。例如,要讓WVGA高精度屏幕和傳統的HVGA 屏 幕同樣顯示一樣尺寸的圖片,當程序不支持時,系統會對程序慌稱屏幕分辨率爲320×533,在(10,10)到(100,100)的區域內繪製圖形完成之 後,系統會將圖形放大到(15,15)到(150,150)的屏幕顯示區域。
3.兼 容更大尺寸的屏幕
當前屏幕超過程序所支持屏幕的上限時,定義supports- screens元素,這樣超出顯示的基準線時,平臺在此顯示黑色的背景圖。例如,WVGA 中精度屏幕上,如程序不支持這樣的大屏幕,系統會謊 稱是一個320×480的,多餘的顯示區域會被填充成黑色。
但爲了達到最佳的顯示效 果,最好的方法仍是設計多套圖片。那就有必要對於全部的屏幕依據精度值進行分級(高中低),以後再設計三套icon:
先爲主流的中精度屏 幕(HVGA)設計一套icon,肯定圖片的像素尺寸。
爲高精度屏幕將圖片放大到150%,爲低精度屏幕將圖片縮小至75%。
將這三套資 源放置到程序的三個文件夾下 :res/drawable-mdpi/ 、res/drawable-hdpi/、 res/drawable- ldpi/。程序在運行時,平臺會根據屏幕的精度調取合適的icon。
設計指南
Android標準icon
Launcher Icon是程序主界面上的功能圖標,Android對於各個icon的風格有必定的要求:
符合當下的流行趨勢,避免過分使用隱喻。
高 度簡化和誇張,小尺寸圖標也能易於識別,不宜太複雜。
嘗試抓住程序的主要特徵,好比音像做爲音樂的icon。
使用天然的輪廓和形狀,看起 來幾何化和有機化,不失真實感。
Icon採用前視角,幾乎沒有透視,光源在頂部。
不光滑但富有質感。
正確和錯誤的icon
另外,全部的icon都有文字標籤,不要在設計時把文字也放到icon中。
Launcher Icon一般是一個較大的標準圖標中包含一個小圖標,使用一箇中性色彩和一個主要色彩,並保持高度的對比,不宜過分飽和。
推薦色值
尺寸和定位
Launcher icons要有多樣化的形狀和樣式,但又要造成統一的視覺風格,其尺寸和定位也用統一:
(Full Asset)紅色邊框爲圖標尺寸
(Icon) 藍色邊框是圖形尺寸,比圖標尺寸稍小,圖形以外的空間用於顯示陰影和特殊效果。
(Square Icon)橙色邊框是另一種圖形尺寸。兩種類型的圖形尺寸能夠達到統一的視覺權重。
Icon dimensions for high-density (hdpi) screens:
Full Asset: 72 x 72 px
Icon: 60 x 60 px
Square Icon: 56 x 56 px
Icon Dimensions for medium-density (mdpi) screens:
Full Asset: 48 x 48 px
Icon: 40 x 40 px
Square Icon: 38 x 3
Icon Dimensions for low-density (ldpi) screens:
Full Asset: 36 x 36 px
Icon: 30 x 30 px
Square Icon: 28 x 28 px
模板
下載Android的標準圖標模板,在此基礎上繪製icon,後期還要加上陰影效果。
WVGA (高精度) 屏幕的陰影:
Effect: Drop Shadow
Color: #000000
Blend Mode: Multiply
Opacity: 75%
Angle: 90°
Distance: 2px
Spread: 0%
Size: 5px
另外,還有Menu icon 、Status bar icon 、Tab icon、 Dialog icon 和List view icon的設計教程請查看原文吧。
很是詳盡的icon設計教程,一個程序裏要放置三套icon,還有Android硬件比較好,否則 內存爆掉