看世界盃的空閒
時間,翻譯一下
官方文檔。分辨率
問題是你們都很關心的(720×480會不會悲劇),而關於這個問題,android官方的文檔無疑最有說服力。因爲不是全部的人都願意去讀英文,因此趁球賽沒開始,翻譯一些。
原文地址:
http://developer.android.com/guide/practices/screens_support.html
————————下面是翻譯—————————我是分割線—————————
多分辨率支持
在設計之初,
Android
系統就被設計爲一個能夠在多種不一樣分辨率的設備上運行的操做系統。對於應用程序來講,系統平臺向它們提供的是一個穩定的,跨平臺的運行環境,而關於如何將程序以正確的方式顯示到它所運行的平臺上所須要的大部分技術細節,都由系統自己進行了處理,無需程序的干預。固然,系統自己也爲程序提供了一系列API,因此在目標平臺的分辨率是能夠徹底肯定的狀況下,程序也能夠精確的控制自身在目標平臺上的
界面顯示方式。
這個文檔會說明系統平臺究竟提供了哪些分辨率支持特性,與它們如何在程序中使用的信息。若是你遵循文檔中列出的方法,就很容易讓你的程序在全部支持的分辨率下都能完美顯示。這樣你就能夠用一個單獨的.apk
文件,將你的程序發佈到全部的平臺上。
若是你已經發布過針對Android 1.5或更早版本平臺的程序,你應該仔細閱讀這篇文檔,而後考慮一下到底如何讓本身的老程序能夠在擁有各類不一樣分辨率,而且運行着Android 1.6或更新平臺上正常顯示。在絕大部分狀況下,只須要對程序做出小小的修改就能夠達到目的,但你仍然須要儘量地在各類分辨率的平臺上進行測試。
特別的,若是你有一個已經完成的程序,又想讓它能夠在超低分辨率的設備(好比320×240)上正確運行,你須要閱讀「老程序的更新策略」,那篇文檔會告訴你應該怎麼作。
術語和概念
屏幕尺寸
屏幕的物理尺寸,以屏幕的對角線長度做爲依據(好比2.8寸,3.5寸)。
簡而言之,Android把全部的屏幕尺寸簡化爲三大類:大,正常,和小。
程序能夠針對這三種尺寸的屏幕提供三種不一樣的佈局方案,而後系統會負責把你的佈局方案以合適的方式渲染到對應的屏幕上,這個過程是不須要程序員用代碼來干預的。
屏幕長寬比
屏幕的物理長度與物理寬度的比例。程序能夠爲制定長寬比的屏幕提供製定的素材,只須要用系統提供的資源分類符long和notlong。
分辨率
屏幕上擁有的像素的總數。注意,雖然大部分狀況下分辨率都被表示爲「寬度×長度」,但分辨率並不意味着屏幕長寬比。在Android系統中,程序通常並不直接處理分辨率。
密度
以屏幕分辨率爲基礎,沿屏幕長寬方向排列的像素。
密度較低的屏幕,在長和寬方向都只有比較少的像素,而高密度的屏幕一般則會有不少——甚至會很是很是多——像素排列在同一區域。屏幕的密度是很是重要的,舉個例子,長寬以像素爲單位定義的界面元素(好比一個按鈕),在低密度的屏幕上會顯得很大,但在高密度的屏幕上則會顯得很小。
密度無關的像素(DIP)
指一個抽象意義上的像素,程序用它來定義界面元素。它做爲一個與實際密度無關的單位,幫助程序員構建一個佈局方案(界面元素的寬度,高度,位置)。
一個與密度無關的像素,在邏輯尺寸上,與一個位於像素密度爲160DPI的屏幕上的像素是一致的,這也是Android平臺所假定的默認顯示設備。在運行的時候,平臺會以目標屏幕的密度做爲基準,「透明地」處理全部須要的DIP縮放操做。要把密度無關像素轉換爲屏幕像素,能夠用這樣一個簡單的公式:pixels = dips * (density / 160)。舉個例子,在DPI爲240的屏幕上,1個DIP等於1.5個物理像素。咱們強烈推薦你用DIP來定義你程序的界面佈局,由於這樣能夠保證你的UI在各類分辨率的屏幕上均可以正常顯示。
支持的屏幕分辨率範圍
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種不一樣配置的屏幕,但你並不必定須要爲它們都提供各自不一樣的資源。系統已經提供了足夠魯棒(就是在各類惡劣環境下正常工做,對環境變化不敏感)的兼容特性,用於在各類不一樣的屏幕上良好顯示你的程序。這在下面的文檔中會詳細描述,若是你須要更多的資料,請查看「與屏幕無關的最佳實踐」。