關於Android解析度的支援

來源:互聯網
上載者:User
關於Android的解析度支援,為大家翻譯官方文檔看世界盃的空閑時間,翻譯一下官方文檔。解析度問題是大家都很關心的(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種不同配置的螢幕,但你並不一定需要為它們都提供各自不同的資源。系統已經提供了足夠魯棒(就是在各種惡劣環境下正常工作,對環境變化不敏感)的相容特性,用於在各種不同的螢幕上良好顯示你的程式。這在下面的文檔中會詳細描述,如果你需要更多的資料,請查看“與螢幕無關的最佳實務”。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.