楊碎明 薄博文
西安交通工程學(xué)院,陜西 西安 710300
?
淺談android手機(jī)多屏幕分辨率問題及處理方法
楊碎明*薄博文*
西安交通工程學(xué)院,陜西西安710300
由于Android平臺(tái)的開源、免費(fèi)等特點(diǎn),其以極快的速度風(fēng)靡全球移動(dòng)終端市場(chǎng),但是也給開發(fā)人員帶來了一個(gè)很大的問題,那就是各種移動(dòng)終端分辨率不同,開發(fā)的軟件要想在所有Android平臺(tái)的移動(dòng)終端上運(yùn)行,這就需要用到多屏幕分辨率自適應(yīng)的方法了。本文將介紹在開發(fā)中經(jīng)常使用的幾種自適應(yīng)的方式,在實(shí)際開發(fā)中,開發(fā)人員可以根據(jù)實(shí)際情況選擇最合適的方式.。
Android移動(dòng)終端分辨率;處理方法
在Google中輸入Android,可以獲得14億條以上的搜索結(jié)果,大部分是關(guān)于技術(shù)的文章、新軟件的發(fā)布、市場(chǎng)占有的提升等振奮人心的信息。打開招聘網(wǎng)站,Android程序員需求與日俱增,同時(shí)薪酬也比同類開發(fā)人員高出不少。再看看身邊,搭載Android系統(tǒng)的移動(dòng)終端已經(jīng)是隨處可見。
(一)Android開源帶來的機(jī)遇
Android平臺(tái)的開源優(yōu)勢(shì),無界限的應(yīng)用程序、應(yīng)用程序可以并行運(yùn)行、應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò)。不管是給用戶還是給應(yīng)用程序開發(fā)人員,都帶來了全新的體驗(yàn)。經(jīng)過短短的3年多時(shí)間,Android手機(jī)的市場(chǎng)占有率已超過了nokia等老牌智能手機(jī),取得了可喜的成績(jī)。Android具有開源性,為開發(fā)者提供了良好的開發(fā)環(huán)境。同時(shí)隨著Android的到來,為畢業(yè)大學(xué)生以及在IT其他行業(yè)的開發(fā)人員提供了非常好的機(jī)遇。
(二)Android開源帶來的問題
Android與iphone的ios最大不同之處正在于Android是開源的、免費(fèi)的,而ios則實(shí)施壟斷。因此,在蘋果ios開發(fā)的好處是不需要考慮手機(jī)的屏幕分辨率。這就為開發(fā)人員在帶來機(jī)遇的同時(shí)帶來了很多問題,怎樣才能一次開發(fā),所有的手機(jī)全部適用呢,而不必花費(fèi)更多的時(shí)間去開發(fā)專門針對(duì)某個(gè)分辨率的版本。只有解決這個(gè)問題,開發(fā)出的程序才有普及的可能。
(一)屏幕尺寸(Screen size)
屏幕尺寸是指顯示器屏幕對(duì)角線的尺寸,一般用英寸來表示,可測(cè)量顯示器對(duì)角線長(zhǎng)度轉(zhuǎn)換為英寸即可(1英寸=2.54厘米)。
(二)分辨率(Resolution)
分辨率就是指屏幕上的點(diǎn)。在同樣大小的屏幕里,組成圖形的點(diǎn)越多,點(diǎn)就會(huì)越小,越小就會(huì)看起來越細(xì)膩,很多屏幕看起來很粗糙,有顆粒感,就是因?yàn)辄c(diǎn)少的原因。所以數(shù)字越高越清晰。例如320*480 320就是橫向排列的點(diǎn),480是縱向的,因?yàn)槠聊皇情L(zhǎng)方形,長(zhǎng)就是縱向,寬是橫向。
(三)屏幕密度(Density)
是指這個(gè)屏幕在單位長(zhǎng)度上能顯示的像素點(diǎn)數(shù),也就是一英寸上能顯示的像素點(diǎn)數(shù),計(jì)算方式就是分辨率除以物理尺寸。屏幕密度能反應(yīng)設(shè)備的清晰程度。
分辨率的問題可以說是困擾Android開發(fā)人員的第一大難題,許多的前輩都針對(duì)這個(gè)問題作出了一些解決方案,大致分為3種:只要求全屏,不考慮變形問題;只考慮寬度縮放,上下留白,并且要求不可以發(fā)生變形;只考慮高度縮放,左右留白,并且要求不可以發(fā)生變形。
(一)只求全屏,不考慮變形
有一少部分應(yīng)用程序或游戲,是不用考慮變形問題,只發(fā)生一些小小的變形是不會(huì)對(duì)用戶產(chǎn)生影響的,但是其都有一個(gè)共同的特點(diǎn),就是要求全屏顯示。既然只是要求全屏顯示,而不考慮變形問題,那么只要把圖片等的寬度和高度分別按不同比例進(jìn)行縮放,保證其充滿屏幕即可。
(二)只考慮寬度縮放,上下留白,要求不變形
絕大多數(shù)的應(yīng)用程序或游戲,是不允許變形的,但是還要求在屏幕上盡量的最大化,這就不能采用上面的方法了。假如要求寬度充滿屏幕,那么只要高度縮放的時(shí)候也按照寬度的縮放比進(jìn)行縮放即可,如播放影片的時(shí)候大部分影片的上下都有黑邊,這就是所謂的上下留白了。
(三)只考慮高度縮放,左右留白,要求不變形
還有一些不允許發(fā)生變形的應(yīng)用程序是要求高度充滿屏幕的,同樣只要在寬度縮放的時(shí)候也按照高度的縮放比進(jìn)行縮放即可,在用這種方式進(jìn)行縮放時(shí),還有可能導(dǎo)致圖片縮放后顯示不全。
(一)屏幕分辨率和清晰度關(guān)系密切,也就是說屏幕分辨率越高,清晰度也越高,即其密度也應(yīng)該越大,否則會(huì)看起來很不清楚,比如4寸的屏幕如果只有100個(gè)像素,這就像近距離看投影儀,或者看電影一樣,非常模糊和不清晰。所以,Android主要是以屏幕密度來區(qū)分不同的設(shè)備:
高密度:hdpi(High dots per inch)
中等密度:mdpi(Medium dots per inch)
低密度:ldpi(Low dots per inch)
并且布局中強(qiáng)烈推薦使用密度無關(guān)單位dip或dp,來作為長(zhǎng)度或者寬度的單位。
對(duì)于一般性的app應(yīng)用程序,寫一個(gè)布局文件在layout中,為三種密度準(zhǔn)備圖片drawable-hdpi,drawable-mdpi,drawable-ldpi,就足以應(yīng)對(duì)80%的設(shè)備。
res/
drawable-hdpi/
ic_launcher.png
drawable-mdpi/
ic_launcher.png
drawable-ldpi/
ic_launcher.png
layout/
main.xml
resources.html
(二)采用自定義CustomView 類開發(fā)
CustomView 類自定義繼承View
public class CustomView extets View{//..}
在完成View控件開發(fā)后,再修改 /res/layout/main.xml
最后在主控類Activity 啟動(dòng)時(shí)獲取手機(jī)或模擬器的分辨率,并把屏幕的高度和寬度設(shè)置為當(dāng)前手機(jī)的分辨率。
public class sample9_5 extends Activity{//..}
本文介紹了android 開源所帶來的最大問題及解決方案,這對(duì)一個(gè)應(yīng)用程序的生存周期來說是至關(guān)重要的,Android app多以dip或dp為單位,所以就必須注意不同密度上它們的對(duì)應(yīng)關(guān)系。這樣就更方便用dip來定義圖片的長(zhǎng)度和寬度。最后介紹如何開發(fā)自定義View,通過繼承View類,來實(shí)現(xiàn)想要效果,方便開發(fā)。
[1]吳亞峰,于復(fù)興編著.Android應(yīng)用開發(fā)完全手冊(cè).人民郵電出版社.
[2]關(guān)朝輝,郭荷清,高偉.基于群決策的多Agent資源管理模型.《計(jì)算機(jī)應(yīng)用與軟件》,2009.
[3]Android實(shí)戰(zhàn)技術(shù):用Dimension解決多屏幕適配的問題-博客-云.
楊碎明(1971-),男,漢族,陜西寶雞人,工程碩士,西安交通工程學(xué)院,軟件設(shè)計(jì)師,研究方向:android手機(jī)開發(fā)技術(shù);薄博文(1981-),女,漢族,陜西西安人,西安交通工程學(xué)院。
TN873
A
1006-0049-(2016)18-0245-01