android適配不一樣分辨率的手機

android中不一樣手機分辨率適配問題html

在項目開發的過程當中,同一個佈局對應不一樣的手機會顯示出不一樣的效果。致使這個現象產生的緣由是不一樣手機的分辨率不一樣。在android sdk提供的幫助文檔中,咱們能夠看到各類手機的分辨率和對應的屏大小。QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。java

目前android手機的分辨率大體就是幫助文檔中描述的幾種。咱們能夠用兩種方式進行不一樣手機的適配。一種是在java代碼中,另一種是在xml文件中。具體使用哪一種方式更有效更合適,要看具體的狀況而定。android

在之前的項目中,我以前作過關於歷史聊天記錄,每頁顯示條數的匹配。不一樣的手機,每頁能夠顯示歷史記錄的條數是不一樣的。我採用的是在java代碼中作匹配。不一樣分辨率的手機,他們都有固定的屏高。例如,480x800,屏高是800。240x320,屏高是320。根據屏高爲斷定條件,爲每一頁顯示歷史記錄的條數作一個限制。我我的以爲,在java代碼中作手機匹配,要看匹配的佈局中,控件是否太多,不太多,能夠在java代碼中根據不一樣的狀況修改,不然,java代碼將會顯得很冗長,修改起來也很麻煩。程序員

在xml進行手機匹配,主要是針對佈局中控件太多,不方便在java代碼中修改的狀況。在xml中解決不匹配問題很簡單,對於不一樣手機的分辨率,創建對應的layout文件便可。例如:480x800,之間創建layout-800x400,240x320,創建layout-320x240。特別注意:大的寫在前面,例如800,320,小的寫在後面,例如480,240。創建了相應的layout後,還要在不一樣的手機上調整佈局中的控件大小和位置。web

在本次項目中,我負責不一樣手機視圖的匹配問題,我選擇的是xml匹配方式,結果發現按上面的方式作了以後,對應分辨率的手機的顯示沒有任何的效果,後來,我查看幫助文檔後,發現必需要在androidmainfest中進行以下代碼的配置:ide

<supports-screens 
android:smallScreens="true" 
android:normalScreens="true" 
android:largeScreens="true" 
android:xlargeScreens="true" 
android:anyDensity="true" />
佈局

若是沒有這幾行代碼,無論你怎麼調整layout中的控件,對應分辨率的手機是沒有任何效果的。注意:因爲android版本的不一樣,有些版本不支持xlargeScreens,能夠直接將android:xlargeScreens="true"去掉。測試

來源:<A style="COLOR: rgb(29,88,209); TEXT-DECORATION: none" title=http://blog.csdn.net/lgl125/article/details/7558179 href="http://blog.csdn.net/lgl125/article/details/7558179">http://blog.csdn.net/lgl125/article/details/7558179ui

 

android屏幕分辨率適配spa

1. 多分辨率支持

在設計之初,Android系統就被設計爲一個能夠在多種不一樣分辨率的設備上運行的操做系統。對於應用程序來講,系統平臺向它們提供的是一個穩定的,跨平臺的運行環境,而關於如何將程序以正確的方式顯示到它所運行的平臺上所須要的大部分技術細節,都由系統自己進行了處理,無需程序的干預。固然,系統自己也爲程序提供了一系列API,因此在目標平臺的分辨率是能夠徹底肯定的狀況下,程序也能夠精確的控制自身在目標平臺上的界面顯示方式。

這個文檔會說明系統平臺究竟提供了哪些分辨率支持特性,與它們如何在程序中使用的信息。若是你遵循文檔中列出的方法,就很容易讓你的程序在全部支持的分辨率下都能完美顯示。這樣你就能夠用一個單獨的.apk文件,將你的程序發佈到全部的平臺上。

若是你已經發布過針對Android 1.5或更早版本平臺的程序,你應該仔細閱讀這篇文檔,而後考慮一下到底如何讓本身的老程序能夠在擁有各類不一樣分辨率,而且運行着Android1.6或更新平臺上正常顯示。在絕大部分狀況下,只須要對程序做出小小的修改就能夠達到目的,但你仍然須要儘量地在各類分辨率的平臺上進行測試。 
特別的,若是你有一個已經完成的程序,又想讓它能夠在超低分辨率的設備(好比320×240)上正確運行,你須要閱讀「老程序的更新策略」,那篇文檔會告訴你應該怎麼作。

2. 術語和概念

屏幕尺寸 
屏幕的物理尺寸,以屏幕的對角線長度做爲依據(好比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種不一樣配置的屏幕,但你並不必定須要爲它們都提供各自不一樣的資源。系統已經提供了足夠魯棒(就是在各類惡劣環境下正常工做,對環境變化不敏感)的兼容特性,用於在各類不一樣的屏幕上良好顯示你的程序。這在下面的文檔中會詳細描述,若是你須要更多的資料,請查看「與屏幕無關的最佳實踐」。

做者「Ant space」

來源:<A style="COLOR: rgb(29,88,209); TEXT-DECORATION: none" title=http://www.2cto.com/kf/201109/104910.html href="http://www.2cto.com/kf/201109/104910.html">http://www.2cto.com/kf/201109/104910.html

英文:<A style="COLOR: rgb(29,88,209); TEXT-DECORATION: none" title=http://developer.android.com/guide/practices/screens_support.html href="http://developer.android.com/guide/practices/screens_support.html">http://developer.android.com/guide/practices/screens_support.html

相關文章
相關標籤/搜索