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