讓android支援多螢幕解析度

2021-08-27 07:11:39 字數 3210 閱讀 6338

android

系統就被設計為乙個可以在多種不同解析度的裝置上執行的作業系統。對於應用程式來說,系統平台向它們提供的是乙個穩定的,跨平台的執行環境,而關於如何將程式以正確的方式顯示到它所執行的平台上所需要的大部分技術細節,都由系統本身進行了處理,無需程式的干預。當然,系統本身也為程式提供了一系列api,所以在目標平台的解析度是可以完全確定的情況下,程式也可以精確的控制自身在目標平台上的

介面顯示方式。

這個文件會說明系統平台究竟提供了哪些解析度支援特性,與它們如何在程式中使用的資訊。如果你遵循文件中列出的方法,就很容易讓你的程式在所有支援的解析度下都能完美顯示。這樣你就可以用乙個單獨的.apk

檔案,將你的程式發布到所有的平台上。

如果你已經發布過針對android 1.5或更早版本平台的程式,你應該仔細閱讀這篇文件,然後考慮一下到底如何讓自己的老程式可以在擁有各種不同解析度,並且執行著android 1.6或更新平台上正常顯示。在絕大部分情況下,只需要對程式作出小小的修改就可以達到目的,但你仍然需要盡可能地在各種解析度的平台上進行測試。

術語和概念

螢幕尺寸

螢幕的物理尺寸,以螢幕的對角線長度作為依據(比如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平台支援的螢幕中一些比較常用的型號,並顯示了系統是如何把它們分類到不同的螢幕配置裡的。有些螢幕解析度並不在下面的列表上,但系統仍會把它們歸入下列的某乙個型別中。

low density (120),ldpi

medium density (160),mdpi

high density (240),hdpi

extra high density (320),xhdpi

smallscreen

qvga (240x320)

480x640

normalscreen

wqvga400 (240x400)

wqvga432 (240x432)

hvga (320x480)

wvga800 (480x800)

wvga854 (480x854)

600x1024

640x960

largescreen

wvga800** (480x800)

wvga854** (480x854)

wvga800* (480x800)

wvga854* (480x854)

600x1024

extra largescreen

1024x600

wxga (1280x800)

1024x768

1280x768

1536x1152

1920x1152

1920x1200

2048x1536

2560x1536

2560x1600

如上表所示,所有解析度的螢幕,都圍繞在基準螢幕周圍,而基準螢幕在分類中,為「正常」尺寸,與「中」密度。之所以用hvga螢幕作為基準螢幕,是因為所有針對android 1.5或更早的程式都是針對這片螢幕所寫的(因為只支援這一片),比如t-mobile g1。

雖然系統支援上面9種不同配置的螢幕,但你並不一定需要為它們都提供各自不同的資源。系統已經提供了足夠魯棒(就是在各種惡劣環境下正常工作,對環境變化不敏感)的相容特性,用於在各種不同的螢幕上良好顯示你的程式。

android 自適應 多螢幕支援

1 螢幕相關概念 1.1解析度 是指螢幕上有橫豎各有多少個畫素 1.2螢幕尺寸 指的是手機實際的物理尺寸,比如常用的2.8英吋,3.2英吋,3.5英吋,3.7英吋 android將螢幕大小分為四個級別 small,normal,large,and extra large 1.3螢幕密度 每英吋畫素數...

android 自適應 多螢幕支援

android 自適應 多螢幕支援 1 螢幕相關概念 1.1解析度 是指螢幕上有橫豎各有多少個畫素 1.2螢幕尺寸 手機螢幕尺寸指的是手機實際的物理尺寸,即螢幕的實際大小。android將螢幕大小分為四個級別 small,normal,large,and extra large 1.3螢幕密度dpi...

android 支援多種螢幕 螢幕支援概覽 一

本節概述 android 對多種螢幕的支援,包括 本文件和 api 中所用術語和概述的簡介 系統支援的螢幕配置摘要,以及 api 和基本 螢幕相容性功能的概述。螢幕尺寸 按螢幕對角測量的實際物理尺寸。為簡便起見,android 將所有實際螢幕尺寸分組為四種通用尺寸 小 正常 大和超大。螢幕密度 螢幕...