日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android适配不同分辨率的手机

發(fā)布時(shí)間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android适配不同分辨率的手机 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

android中不同手機(jī)分辨率適配問(wèn)題

在項(xiàng)目開(kāi)發(fā)的過(guò)程中,同一個(gè)布局對(duì)應(yīng)不同的手機(jī)會(huì)顯示出不同的效果。導(dǎo)致這個(gè)現(xiàn)象產(chǎn)生的原因是不同手機(jī)的分辨率不同。在android sdk提供的幫助文檔中,我們可以看到各種手機(jī)的分辨率和對(duì)應(yīng)的屏大小。QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。

目前android手機(jī)的分辨率大致就是幫助文檔中描述的幾種。我們可以用兩種方式進(jìn)行不同手機(jī)的適配。一種是在java代碼中,另外一種是在xml文件中。具體使用哪種方式更有效更合適,要看具體的情況而定。

在以前的項(xiàng)目中,我之前做過(guò)關(guān)于歷史聊天記錄,每頁(yè)顯示條數(shù)的匹配。不同的手機(jī),每頁(yè)可以顯示歷史記錄的條數(shù)是不同的。我采用的是在java代碼中做匹配。不同分辨率的手機(jī),他們都有固定的屏高。例如,480x800,屏高是800。240x320,屏高是320。根據(jù)屏高為判定條件,為每一頁(yè)顯示歷史記錄的條數(shù)做一個(gè)限制。我個(gè)人覺(jué)得,在java代碼中做手機(jī)匹配,要看匹配的布局中,控件是否太多,不太多,可以在java代碼中根據(jù)不同的情況修改,否則,java代碼將會(huì)顯得很冗長(zhǎng),修改起來(lái)也很麻煩。

在xml進(jìn)行手機(jī)匹配,主要是針對(duì)布局中控件太多,不方便在java代碼中修改的情況。在xml中解決不匹配問(wèn)題很簡(jiǎn)單,對(duì)于不同手機(jī)的分辨率,建立對(duì)應(yīng)的layout文件即可。例如:480x800,之間建立layout-800x400,240x320,建立layout-320x240。特別注意:大的寫(xiě)在前面,例如800,320,小的寫(xiě)在后面,例如480,240。建立了相應(yīng)的layout后,還要在不同的手機(jī)上調(diào)整布局中的控件大小和位置。

在本次項(xiàng)目中,我負(fù)責(zé)不同手機(jī)視圖的匹配問(wèn)題,我選擇的是xml匹配方式,結(jié)果發(fā)現(xiàn)按上面的方式做了之后,對(duì)應(yīng)分辨率的手機(jī)的顯示沒(méi)有任何的效果,后來(lái),我查看幫助文檔后,發(fā)現(xiàn)必須要在androidmainfest中進(jìn)行如下代碼的配置:

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

如果沒(méi)有這幾行代碼,不管你怎么調(diào)整layout中的控件,對(duì)應(yīng)分辨率的手機(jī)是沒(méi)有任何效果的。注意:由于android版本的不同,有些版本不支持xlargeScreens,可以直接將android:xlargeScreens="true"去掉。

來(lái)源:http://blog.csdn.net/lgl125/article/details/7558179

?

android屏幕分辨率適配

1. 多分辨率支持

在設(shè)計(jì)之初,Android系統(tǒng)就被設(shè)計(jì)為一個(gè)可以在多種不同分辨率的設(shè)備上運(yùn)行的操作系統(tǒng)。對(duì)于應(yīng)用程序來(lái)說(shuō),系統(tǒng)平臺(tái)向它們提供的是一個(gè)穩(wěn)定的,跨平臺(tái)的運(yùn)行環(huán)境,而關(guān)于如何將程序以正確的方式顯示到它所運(yùn)行的平臺(tái)上所需要的大部分技術(shù)細(xì)節(jié),都由系統(tǒng)本身進(jìn)行了處理,無(wú)需程序的干預(yù)。當(dāng)然,系統(tǒng)本身也為程序提供了一系列API,所以在目標(biāo)平臺(tái)的分辨率是可以完全確定的情況下,程序也可以精確的控制自身在目標(biāo)平臺(tái)上的界面顯示方式。

這個(gè)文檔會(huì)說(shuō)明系統(tǒng)平臺(tái)究竟提供了哪些分辨率支持特性,與它們?nèi)绾卧诔绦蛑惺褂玫男畔ⅰ?/strong>如果你遵循文檔中列出的方法,就很容易讓你的程序在所有支持的分辨率下都能完美顯示。這樣你就可以用一個(gè)單獨(dú)的.apk文件,將你的程序發(fā)布到所有的平臺(tái)上。

如果你已經(jīng)發(fā)布過(guò)針對(duì)Android 1.5或更早版本平臺(tái)的程序,你應(yīng)該仔細(xì)閱讀這篇文檔,然后考慮一下到底如何讓自己的老程序可以在擁有各種不同分辨率,并且運(yùn)行著Android1.6或更新平臺(tái)上正常顯示。在絕大部分情況下,只需要對(duì)程序作出小小的修改就可以達(dá)到目的,但你仍然需要盡可能地在各種分辨率的平臺(tái)上進(jìn)行測(cè)試。?
特別的,如果你有一個(gè)已經(jīng)完成的程序,又想讓它可以在超低分辨率的設(shè)備(比如320×240)上正確運(yùn)行,你需要閱讀“老程序的更新策略”,那篇文檔會(huì)告訴你應(yīng)該怎么做。

2. 術(shù)語(yǔ)和概念

屏幕尺寸?
屏幕的物理尺寸,以屏幕的對(duì)角線長(zhǎng)度作為依據(jù)(比如2.8寸,3.5寸)。?
簡(jiǎn)而言之,Android把所有的屏幕尺寸簡(jiǎn)化為三大類(lèi):大,中,小。?
程序可以針對(duì)這三種尺寸的屏幕提供三種不同的布局方案,然后
系統(tǒng)會(huì)負(fù)責(zé)把你的布局方案以合適的方式渲染到對(duì)應(yīng)的屏幕上。這個(gè)過(guò)程是不需要程序員用代碼來(lái)干預(yù)的。

屏幕長(zhǎng)寬比?
屏幕的物理長(zhǎng)度與物理寬度的比例。程序可以為制定長(zhǎng)寬比的屏幕提供制定的素材,只需要用系統(tǒng)提供的資源分類(lèi)符long和notlong。

分辨率?
屏幕上擁有的像素的總數(shù)。注意,雖然大部分情況下分辨率都被表示為“寬度×長(zhǎng)度”,但分辨率并不意味著屏幕長(zhǎng)寬比。在Android系統(tǒng)中,程序一般并不直接處理分辨率。

密度?
以屏幕分辨率為基礎(chǔ),沿屏幕長(zhǎng)寬方向排列的像素。?
密度較低的屏幕,在長(zhǎng)和寬方向都只有比較少的像素,而高密度的屏幕通常則會(huì)有很多——甚至?xí)浅7浅6唷袼嘏帕性谕粎^(qū)域。屏幕的密度是非常重要的,舉個(gè)例子,長(zhǎng)寬以像素為單位定義的界面元素(比如一個(gè)按鈕),在低密度的屏幕上會(huì)顯得很大,但在高密度的屏幕上則會(huì)顯得很小。

密度無(wú)關(guān)的像素(DIP)?
指一個(gè)抽象意義上的像素,程序用它來(lái)定義界面元素。它作為一個(gè)與實(shí)際密度無(wú)關(guān)的單位,幫助程序員構(gòu)建一個(gè)布局方案(界面元素的寬度,高度,位置)。?
一個(gè)與密度無(wú)關(guān)的像素,在邏輯尺寸上,與一個(gè)位于像素密度為160DPI的屏幕上的像素是一致的,這也是Android平臺(tái)所假定的默認(rèn)顯示設(shè)備。在運(yùn)行的時(shí)候,平臺(tái)會(huì)以目標(biāo)屏幕的密度作為基準(zhǔn),“透明地”處理所有需要的DIP縮放操作。要把密度無(wú)關(guān)像素轉(zhuǎn)換為屏幕像素,可以用這樣一個(gè)簡(jiǎn)單的公式:pixels = dips * (density / 160)。舉個(gè)例子,在DPI為240的屏幕上,1個(gè)DIP等于1.5個(gè)物理像素。我們強(qiáng)烈推薦你用DIP來(lái)定義你程序的界面布局,因?yàn)檫@樣可以保證你的UI在各種分辨率的屏幕上都可以正常顯示。

支持的屏幕分辨率范圍?
1.5及更早版本的Android系統(tǒng),在設(shè)計(jì)的時(shí)候假定系統(tǒng)只會(huì)運(yùn)行在一種分辨率的設(shè)備上——HVGA(320×480)分辨率,尺寸為3.2寸。由于系統(tǒng)只能工作在一種屏幕上,開(kāi)發(fā)人員就可以針對(duì)那個(gè)屏幕來(lái)編寫(xiě)自己的程序,而無(wú)需去考慮程序在其他屏幕上的顯示問(wèn)題。?
自從Android 1.6以來(lái),系統(tǒng)引入了對(duì)多種尺寸、多種分辨率屏幕的支持,以此滿(mǎn)足擁有各種配置的新平臺(tái)的運(yùn)行需求。這就意味著開(kāi)發(fā)人員在針對(duì)Android 1.6或更新版系統(tǒng)開(kāi)發(fā)程序的時(shí)候,需要為自己的程序在多種分辨率的屏幕上良好顯示作出額外的設(shè)計(jì)。?
為了簡(jiǎn)化程序員面在對(duì)各種分辨率時(shí)的困擾,也為了具備各種分辨率的平臺(tái)都可以直接運(yùn)行這些程序,Android平臺(tái)將所有的屏幕以密度和分辨率為分類(lèi)方式,各自分成了三類(lèi):?
·三種主要的尺寸:大,正常,小;?
·三種不同的密度:高(hdpi),中(mdpi)和低(ldpi)。?
如果需要的話(huà),程序可以為各種尺寸的屏幕提供不同的資源(主要是布局),也可以為各種密度的屏幕提供不同的資源(主要是位圖)。除此以外,程序不需要針對(duì)屏幕的尺寸或者密度作出任何額外的處理。在執(zhí)行的時(shí)候,平臺(tái)會(huì)根據(jù)屏幕本身的尺寸與密度特性,自動(dòng)載入對(duì)應(yīng)的資源,并把它們從邏輯像素(DIP,用于定義界面布局)轉(zhuǎn)換成屏幕上的物理像素。?
下表列出了Android平臺(tái)支持的屏幕中一些比較常用的型號(hào),并顯示了系統(tǒng)是如何把它們分類(lèi)到不同的屏幕配置里的。有些屏幕分辨率并不在下面的列表上,但系統(tǒng)仍會(huì)把它們歸入下列的某一個(gè)類(lèi)型中。

低密度(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寸

如上表所示,所有分辨率的屏幕,都圍繞在基準(zhǔn)屏幕周?chē)?#xff0c;而基準(zhǔn)屏幕在分類(lèi)中,為“正常”尺寸,與“中”密度。之所以用HVGA屏幕作為基準(zhǔn)屏幕,是因?yàn)樗嗅槍?duì)Android 1.5或更早的程序都是針對(duì)這片屏幕所寫(xiě)的(因?yàn)橹恢С诌@一片),比如T-Mobile G1。

雖然系統(tǒng)支持上面9種不同配置的屏幕,但你并不一定需要為它們都提供各自不同的資源。系統(tǒng)已經(jīng)提供了足夠魯棒(就是在各種惡劣環(huán)境下正常工作,對(duì)環(huán)境變化不敏感)的兼容特性,用于在各種不同的屏幕上良好顯示你的程序。這在下面的文檔中會(huì)詳細(xì)描述,如果你需要更多的資料,請(qǐng)查看“與屏幕無(wú)關(guān)的最佳實(shí)踐”。

作者“Ant space”

來(lái)源:http://www.2cto.com/kf/201109/104910.html

英文:http://developer.android.com/guide/practices/screens_support.html

總結(jié)

以上是生活随笔為你收集整理的android适配不同分辨率的手机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。