Android全面的屏幕適配方案解析(二)__寬高限定符屏幕適配

上一篇把屏幕適配相關(guān)的概念梳理了一下,主要也是為了能更好的理解后面內(nèi)容廉丽,那從這篇開始就要講解適配方案啦,沒看第一篇的可以先看這篇:
Android全面的屏幕適配方案解析(一)__屏幕適配概念梳理
Android全面的屏幕適配方案解析(二)__寬高限定符屏幕適配
Android全面的屏幕適配方案解析(三)__sw限定符適配方案
Android全面的屏幕適配方案解析(四)__今日頭條適配方案

下面列舉常用的適配方案:

  • dp適配方案
  • 寬高限定符適配方案
  • AndroidAutoLayout適配方案
  • sw限定符適配方案
  • 今日頭條適配方案
  • AndroidAutoSize適配方案

看到這有些童鞋可能就要問了,為啥有些過時的適配方案這里還講解啊邓梅,只能說每種適配方案都會有各自的優(yōu)缺點冶共,從最原始的適配方案講起乾蛤,才能更好的理解為啥會衍生出各種適配方案每界,話不多說,直接開干吧家卖!

1眨层、dp適配方案

眾所周知,在開發(fā)過程中標(biāo)識尺寸的時候上荡,Android并不推薦使用px這個真實像素單位趴樱,因為相同尺寸在不同分辨率的手機顯示效果各不相同,如下為圖片寬高為250x250(px)酪捡,在分辨率:480x800叁征、720x1280、1080x1920的顯示效果圖:

出現(xiàn)類似于上圖這樣的效果逛薇,整體的布局效果可能會變形捺疼,所以px這個單位在布局文件中是不推薦的。

相對應(yīng)的Android推薦使用dp作為尺寸單位來適配UI金刁,之前我們講過帅涂,dp為密度無關(guān)像素,與終端上的實際物理像素點無關(guān)尤蛮,可以保證在不同屏幕像素密度的設(shè)備上顯示相同的效果媳友。

下面還是根據(jù)實例來說明一下,如下為圖片寬高為250x250(dp)产捞,在分辨率:480x800醇锚、720x1280、1080x1920的顯示效果圖:

從效果圖可以看出坯临,寬高250dp在不同分辨率手機整體的布局效果差異并不大焊唬,為啥會這樣呢?

我們知道同樣尺寸在不同分辨率的設(shè)備看靠,每1dp所代表的像素數(shù)量是不一樣的赶促,如表格所示:

由表格可以看出,在480x800挟炬、720x1280鸥滨、1080x1920的手機,dpi是不同的谤祖,這也是說婿滓,1dp在這些不同分辨率的手機中,分別對應(yīng)的1.5px粥喜、2px凸主、3px,這樣當(dāng)我們用dp作為控件大小單位的時候额湘,在不同分辨率的手機上看到的大小一樣卿吐,此時各手機上顯示的比例也就一致啦旁舰。

以上的適配方式,通過dp再加上自適應(yīng)布局和weight比例布局可以基本解決不同手機上適配的問題但两,這基本上就是最原始的Android適配方案鬓梅。

那這種方案有沒缺點呢?

自然是有的谨湘,不然也不會推出這么多的適配方案绽快,那我們來看看有啥缺點。

我們知道Android之所以碎片化這么嚴重紧阔,跟Android系統(tǒng)坊罢、屏幕尺寸、屏幕密度的碎片化有很大的關(guān)系擅耽,而手機廠商生產(chǎn)的手機設(shè)備也并沒有按照屏幕尺寸活孩、分辨率和像素密度的關(guān)系規(guī)則來實現(xiàn),比如屏幕分辨率1080x1920乖仇,屏幕尺寸為5憾儒,那么dip為440,假如UI設(shè)計圖按屏幕寬度為375dp設(shè)計乃沙,那么這樣會存在啥問題呢起趾?

根據(jù)上述描述,我們可以通過計算出屏幕寬度為:1080/(440/160) = 393dp警儒,也就是說實際的屏幕寬度是比設(shè)計圖的要寬的训裆,那這樣即使用dp為單位也無法跟其它設(shè)備顯示同樣的效果,這就需要通過估算或者設(shè)定規(guī)范值等等進行換算設(shè)置蜀铲,這也就需要我們耗費精力去轉(zhuǎn)換尺寸边琉,這會極大降低開發(fā)效率。

2记劝、寬高限定符適配方案

所謂的寬高限定符適配就是窮舉市面上所有的Android手機的寬高像素值变姨,不過需要先設(shè)定一個基準,然后其它分辨率根據(jù)這個基準做適配厌丑,如圖所示:

那什么叫設(shè)定一個基準呢钳恕?

比如設(shè)定320x480的分辨率為基準,那么:

基準寬度為320蹄衷,即將任何分辨率的寬度分為320份,取值為x1到x320厘肮。

基準長度為480愧口,即將任何分辨率的長度分為480份,取值為y1到y(tǒng)480类茂。

那么該基準尺寸編寫對應(yīng)的dimens文件為:

那什么又叫其它分辨率根據(jù)這個基準做適配呢耍属?

比如拿480x800分辨率的手機來說托嚣,需要在項目中values-800x480目錄下的dimens.xml文件中的如下設(shè)置,如圖所示:

那么這份數(shù)據(jù)是怎么計算得到的呢厚骗,那當(dāng)然是在基準分辨率的基礎(chǔ)上計算得到的示启,以下為寬度x演示即:

x1=(480/基準)1=(480/320)1=1.5px

x2=(480/基準)2=(480/320)2=3px

...

x320=(480/基準)320=(480/320)320=480px

同理長度y計算也是一樣的。

這個時候有童鞋又說了领舰,市面上我怎么知道有多少分辨率的手機啊夫嗓,就算知道所有分辨率,每個這么計算不得寫廢了啊冲秽,淡定哈舍咖,這些都是可以通過工具自動生成,這得感謝鴻洋大佬提供的生成工具锉桑。

1排霉、分析需要的支持的分辨率

對于主流的分辨率已經(jīng)集成到程序里了,對于比較特殊的可以通過參數(shù)指定民轴,而關(guān)于屏幕分辨率信息攻柠,可以通過該網(wǎng)站查詢:點擊這里跳轉(zhuǎn)

2、自動生成文件的程序地址

點擊這里跳轉(zhuǎn)獲取自動生成程序

這里提供了個jar包后裸,默認情況下瑰钮,雙擊即可生成,如圖所示:

這里默認內(nèi)置了常用的分辨率轻抱,默認基準為480*320飞涂,對于特殊需求,可以通過命令行指定即可祈搜,比如我想以分辨率1280 * 800為基準 较店,并且額外支持尺寸:1152 * 735;4500 * 3200容燕,如圖所示:

格式如下:

java -jar xx.jar width height width,height_width,height

最后自動生成文件如圖所示:


這樣就更改了默認的基準梁呈,還添加了額外支持的分辨率。

使用這種適配方案蘸秘,可以按照UI設(shè)計稿的尺寸為基準分辨率官卡,這時運行在不同分辨率的手機中,這些系統(tǒng)會根據(jù)這些dimens引用去該分辨率的文件夾下面尋找對應(yīng)的值醋虏,這樣基本解決了我們的適配問題寻咒,而且極大的提升了我們UI開發(fā)的效率。

那這種方案有沒缺點呢颈嚼?當(dāng)然也是有的

  • 最明顯的肯定就是占用資源大毛秘,會增加APK的體積
  • 容錯機制大,需要精準命中資源文件才能適配,比如1920x1080的手機就一定要找到1920x1080的限定符叫挟,否則就只能用統(tǒng)一的默認的dimens文件了艰匙。而使用默認的尺寸的話,UI就很可能變形抹恳。

為了防止篇幅過長员凝,這里就先介紹兩種適配方案,后面幾種后面會一一解析奋献,敬請期待健霹,歡迎關(guān)注公眾號【龍旋】能獲取最新更新內(nèi)容哦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秽荞,一起剝皮案震驚了整個濱河市骤公,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扬跋,老刑警劉巖阶捆,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钦听,居然都是意外死亡洒试,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門朴上,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垒棋,“玉大人,你說我怎么就攤上這事痪宰〉鸺埽” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵衣撬,是天一觀的道長乖订。 經(jīng)常有香客問我,道長具练,這世上最難降的妖魔是什么乍构? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮扛点,結(jié)果婚禮上哥遮,老公的妹妹穿的比我還像新娘。我一直安慰自己陵究,他們只是感情好眠饮,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铜邮,像睡著了一般君仆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天返咱,我揣著相機與錄音,去河邊找鬼牍鞠。 笑死咖摹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的难述。 我是一名探鬼主播萤晴,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胁后!你這毒婦竟也來了店读?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤攀芯,失蹤者是張志新(化名)和其女友劉穎屯断,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侣诺,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡殖演,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了年鸳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趴久。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搔确,靈堂內(nèi)的尸體忽然破棺而出彼棍,到底是詐尸還是另有隱情,我是刑警寧澤膳算,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布座硕,位于F島的核電站,受9級特大地震影響畦幢,放射性物質(zhì)發(fā)生泄漏坎吻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一宇葱、第九天 我趴在偏房一處隱蔽的房頂上張望瘦真。 院中可真熱鬧,春花似錦黍瞧、人聲如沸诸尽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您机。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間际看,已是汗流浹背咸产。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仲闽,地道東北人脑溢。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像赖欣,于是被迫代替她去往敵國和親屑彻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容