Android屏幕適配

Android屏幕適配

概述

屏幕適配的主要目標(biāo)有兩個崖蜜,不同屏幕尺寸的適配和不同像素密度的適配。隨著手機(jī)行業(yè)發(fā)展異形屏也開始流行纱注,異形屏幕適配也日漸重要(Android 9 (API level 28)開始提供官方支持)惜浅。

適配不同的屏幕尺寸

適配方法:

  1. RelativeLayout可以在不同尺寸的屏幕上保留視圖組件的空間位置關(guān)系
  2. 使用尺寸限定符(layout-large)針對不同尺寸屏幕提供多種備選布局
  3. 使用最小寬度限定符(layout-sw600dp,寬度大于等于600dp的屏幕肝匆,需要Android3.2及以上系統(tǒng))針對不同尺寸屏幕提供多種備選布局。
  4. 使用屏幕方向限定符針對不同尺寸和方向的屏幕提供多種備選布局顺献。
  5. 使用九宮格位圖(.9)支持尺寸可能改變的視圖組件顯示圖像資源

適配不同的屏幕密度

密度無關(guān)單位:dp(設(shè)備獨(dú)立像素)或sp(縮放獨(dú)立像素)旗国,不同像素密度下可以提供相同的物理尺寸顯示效果。

  • dpi:設(shè)備像素密度注整,這是一個軟件系統(tǒng)中的概念能曾,用于代表設(shè)備像素密度的一個級別。是可以修改的
  • ppi:物理像素密度设捐,這是硬件中的參數(shù),代表每英寸屏幕的像素個數(shù)塘淑。不能修改萝招,只和屏幕物理特性有關(guān)。一般一定范圍內(nèi)的ppi對應(yīng)同一個dpi存捺。
  • px:像素pixel的簡寫槐沼,代表屏幕的一個像素點(diǎn)
  • dp:像素密度無關(guān)的一個單位,代表160dpi下的屏幕物理尺寸捌治,dp=(dpi/160)*px,在不同像素密度下1dp對應(yīng)不同的像素(px)值岗钩。
  • sp:scaled pixels,縮放像素肖油,用于文字大小適配兼吓。sp會跟隨系統(tǒng)字體設(shè)置大小進(jìn)行縮放。

適配方法:

  1. 使用分辨率無關(guān)計量單位dp/sp適配不同屏幕密度
  2. 提供針對不同屏幕像素密度的備用位圖資源(ldpi-0.75 mdpi-1.0 hdpi-1.5 xhdpi-2.0 xxhdpi-3.0 xxxhdpi-4.0)

一些原則

  • 避免對界面組件的大小和位置進(jìn)行硬編碼
  • 使用布局別名減少重復(fù)的布局文件森枪。

適配方案

  1. 寬高限定符適配

    Android中有提供了一種關(guān)于尺寸的資源類型视搏,Dimension,她可以定義一系列數(shù)值單位的尺寸值县袱,可以使dp浑娜、px、sp式散、pt筋遭、mm、in中的一種,位于res/values/filename.xml下漓滔,資源可以通過一些限定符指定給不同的尺寸编饺、像素密度的設(shè)備使用。所以我們可以根據(jù)寬高限定符生成多套Dimension資源文件針對不同屏幕下的尺寸次和,文件一般類似:values-480x320反肋。一般是以某一像素密度下的尺寸為基準(zhǔn),其他密度按照比例進(jìn)行縮放踏施。寬高限定符的特點(diǎn)是只針對指定分辨率的屏幕石蔗。所以想要完美的適配所有屏幕就需要窮舉市面上所有尺寸的屏幕才可以達(dá)到預(yù)想效果。

  2. smallestWidth適配-最小寬度適配

    Android中提供了最小寬度限定符畅形,可以識別屏幕可用寬度和高度中較小的一個养距,指定一個尺寸最為接近的資源文件(默認(rèn)會使用不大于自身寬度dp值的資源文件),一般是XX-swxxdp日熬。針對寬高限定符只針對一種尺寸的缺陷棍厌,最小寬度則是匹配最接近的尺寸。很明顯這些資源文件是可以自動生成的:https://github.com/ladingwu/dimens_sw

    以上兩種方案都會增大APK文件的大小竖席,根據(jù)資源文件的多寡耘纱,會增大幾十K到幾百K不等。

  3. 字節(jié)跳動適配方案

    文章:一種極低成本的Android屏幕適配方式

    該方案通過強(qiáng)制修改設(shè)備中代表dpi的屬性densityDpi和dp px轉(zhuǎn)換關(guān)系的density和sp px轉(zhuǎn)換關(guān)系的scaledDensity毕荐,達(dá)到統(tǒng)一不同設(shè)備尺寸(這里只是統(tǒng)一寬度或者高度一個維度)的目的束析,這樣的適配成本最低,由于修改也是使用公開的api憎亚,穩(wěn)定性也不成問題员寇。

    原理:

    當(dāng)我們使用dp、sp作為尺寸單位時第美,實(shí)際顯示的像素尺寸根據(jù)公式:px=(dpi/160)*dp計算蝶锋,在默認(rèn)情況下density=dpi/160,根據(jù)設(shè)計稿給出的值和屏幕的實(shí)際像素寬度或者像素高度計算出一個比例值作為density的值什往,這樣在不同尺寸的屏幕上直接使用設(shè)計稿數(shù)值就可以按照百分比填充屏幕扳缕。

參考文檔

  1. https://developer.android.com/training/multiscreen/screensizes#TaskUseSizeQuali
  2. https://developer.android.com/guide/topics/resources/more-resources#Dimension
  3. https://juejin.im/post/5ae9cc3a5188253dc612842b#heading-4
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市别威,隨后出現(xiàn)的幾起案子第献,更是在濱河造成了極大的恐慌,老刑警劉巖兔港,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庸毫,死亡現(xiàn)場離奇詭異,居然都是意外死亡衫樊,警方通過查閱死者的電腦和手機(jī)飒赃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門利花,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人载佳,你說我怎么就攤上這事炒事。” “怎么了蔫慧?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵挠乳,是天一觀的道長。 經(jīng)常有香客問我姑躲,道長睡扬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任黍析,我火速辦了婚禮卖怜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阐枣。我一直安慰自己马靠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布蔼两。 她就那樣靜靜地躺著甩鳄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪额划。 梳的紋絲不亂的頭發(fā)上妙啃,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天,我揣著相機(jī)與錄音锁孟,去河邊找鬼彬祖。 笑死茁瘦,一個胖子當(dāng)著我的面吹牛品抽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甜熔,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼圆恤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腔稀?” 一聲冷哼從身側(cè)響起盆昙,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焊虏,沒想到半個月后淡喜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诵闭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年炼团,在試婚紗的時候發(fā)現(xiàn)自己被綠了澎嚣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡瘟芝,死狀恐怖易桃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锌俱,我是刑警寧澤晤郑,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站贸宏,受9級特大地震影響造寝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锚赤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一匹舞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧线脚,春花似錦赐稽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寓落,卻和暖如春括丁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伶选。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工史飞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仰税。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓构资,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陨簇。 傳聞我的和親對象是個殘疾皇子吐绵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

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