【Android 基礎(chǔ)】之屏幕適配

一、相關(guān)概念

屏幕尺寸

屏幕對(duì)角線的長度赐纱,單位英寸(inch)糊肤,1 inch=2.54 cm

屏幕分辨率

手機(jī)在橫向、縱向上的像素點(diǎn)數(shù)總和啰扛,單位像素(pixel)

屏幕像素密度

每英寸的像素點(diǎn)數(shù)嚎京,單位 dpi(dot per inch)
Android 手機(jī)根據(jù)屏幕像素密度分成六個(gè)級(jí)別:

  • ldpi(低密度)<= 120dpi
  • mdpi(中密度) <= 160dpi
  • hdpi(高密度) <= 240dpi
  • xhdpi(超高密度) <= 320dpi
  • xxdhpi(超超高密度)<= 480dpi
  • xxxhdpi (超超超高密度)<= 640dpi
密度無關(guān)像素

density-independent pixel,dp 或 dip隐解,與終端上的實(shí)際物理像素點(diǎn)無關(guān)鞍帝。
UI 設(shè)計(jì)師的設(shè)計(jì)圖是以 px 為單位的,而 Android 開發(fā)是以 dp 為單位的煞茫,所以 px 要和 dp 進(jìn)行轉(zhuǎn)換帕涌,在 Android 中摄凡,以160dpi 的屏幕像素密度為基準(zhǔn)

  • 120dpi : 1dp = 0.75px
  • 160dpi : 1dp = 1px
  • 240dpi : 1dp = 1.5px
  • 320dpi : 1dp = 2px
  • 480dpi : 1dp = 3px
  • 640dpi : 1dp = 4px
獨(dú)立比例像素

scale-independent pixel,sp或sip蚓曼。開發(fā)時(shí)用此單位設(shè)置文字大小亲澡,可根據(jù)字體大小首選項(xiàng)進(jìn)行縮放。推薦使用12sp纫版、14sp床绪、18sp、22sp作為字體設(shè)置的大小其弊,不推薦使用奇數(shù)和小數(shù)癞己,容易造成精度的丟失問題;小于12sp的字體會(huì)太小導(dǎo)致用戶看不清

二瑞凑、圖片適配

Android 圖片加載機(jī)制:在 res 目錄下面有一系列以屏幕像素密度作后綴的 drawable 文件夾末秃,系統(tǒng)在加載 res/drawable 文件夾下的圖片時(shí)首先會(huì)根據(jù)設(shè)備的屏幕像素密度到對(duì)應(yīng)的 drawable 文件夾去尋找圖片,找不到會(huì)到屏幕像素密度高一級(jí)的 drawable 文件夾去尋找籽御,直至最高級(jí)別的 drawable 文件夾還沒有找到的話练慕,再到比設(shè)備屏幕像素密度低的文件夾去尋找圖片。找到圖片后技掏,會(huì)根據(jù)設(shè)備屏幕像素密度和 drawable 文件夾的屏幕像素密度的比例對(duì)圖片進(jìn)行縮放铃将。

  1. 所以,我們只需要準(zhǔn)備一套分辨率規(guī)格的圖片哑梳,根據(jù)現(xiàn)在 Android 設(shè)備主流屏幕像素密度劲阎,最好選擇 drawable-xhdpi 文件夾;
  2. 使用自動(dòng)拉伸位圖 鸠真,.9圖是一種特殊的 PNG 圖片悯仙,左上邊規(guī)定了圖片的拉伸區(qū)域,右下邊規(guī)定了圖片的 padding box吠卷,也即內(nèi)容與背景圖邊緣的 padding锡垄;
  3. 通過 ImageView 的 ScaleType 來控制圖片的顯示;

三祭隔、布局適配

  1. 使用相對(duì)布局 RelativeLayout货岭,禁用絕對(duì)布局 AbsoluteLayout;
  2. 使用線性布局 LinearLayout 時(shí)疾渴,使用 android:layout_weight 屬性控制子 View 所占權(quán)重千贯;
  3. 使用限定符,程序在運(yùn)行時(shí)根據(jù)當(dāng)前設(shè)備的配置(屏幕尺寸)自動(dòng)加載合適的布局資源
  • 尺寸限定符

在 res 目錄下創(chuàng)建帶后綴的 layout 目錄搞坝,比如 layout-large搔谴,layout-xlarge 等, 大于7寸的平板設(shè)備會(huì)自動(dòng)加載 layout-large 目錄下的布局文件桩撮,大于 10寸的平板設(shè)備會(huì)自動(dòng)加載 layout-xlarge 目錄下的布局文件己沛,小屏幕設(shè)備則默認(rèn)加載 layout 目錄下的布局慌核,這種方式只適用于 Android3.2版本之前;

  • 最小寬度限定符

通過指定某個(gè)最小寬度(以 dp 為單位)來精確定位屏幕從而加載不同的 UI 資源申尼。
該方式和尺寸限定符一樣垮卓,都是在 res 目錄下創(chuàng)建帶后綴名的 layout 文件夾,后綴格式為 -swXXXdp师幕,只要寬度或者高度大于 XXXdp粟按,就加載該目錄下的布局文件。

  • 布局別名

該方式并不需要新建 layout 目錄霹粥,而是在 layout 目錄創(chuàng)建多個(gè) layout 文件
然后使用限定符創(chuàng)建多個(gè) values 目錄灭将,比如 values-large,values-swXXXdp后控,在 values 目錄下創(chuàng)建 layout.xml 文件庙曙,在 layout.xml 中聲明同一個(gè)布局的不同名稱的布局文件
比如在 res/values/layout.xml 文件中這樣聲明:

<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>

那么在高度或?qū)挾却笥?00dp 的設(shè)備上加載名稱為 main 的布局文件時(shí)就會(huì)加載名稱為 main_twopanes 的布局文件

  • 屏幕方向(Orientation)限定符
    使用布局別名來實(shí)現(xiàn)屏幕方向,屏幕橫向的限定符為 land浩淘,屏幕縱向的限定符為 port

上面 layout 目錄和 values 目錄的后綴也可以是屏幕分辨率捌朴,加載 layout 或者 values 的時(shí)候不同于加載 drawable,系統(tǒng)會(huì)首先在設(shè)備分辨率對(duì)應(yīng)的目錄下尋找张抄,如果沒有找到砂蔽,則到低于設(shè)備分辨率的目錄中尋找,而不會(huì)到高于設(shè)備分辨率的目錄下去找署惯,如果沒有找到左驾,則到?jīng)]有后綴名的默認(rèn)目錄下尋找,還沒有找到會(huì)報(bào)錯(cuò)

  1. 使用 dp 作為尺寸單位极谊,其實(shí)如果設(shè)備的密度無關(guān)像素尺寸不同的話诡右,在不同設(shè)備上顯示也會(huì)有差別,可以在不同的 res/values/dimens.xml 文件中聲明不同的 dp 值轻猖;
  2. 使用百分比布局
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帆吻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜕依,更是在濱河造成了極大的恐慌桅锄,老刑警劉巖琉雳,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件样眠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡翠肘,警方通過查閱死者的電腦和手機(jī)檐束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來束倍,“玉大人被丧,你說我怎么就攤上這事盟戏。” “怎么了甥桂?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵柿究,是天一觀的道長。 經(jīng)常有香客問我黄选,道長蝇摸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任办陷,我火速辦了婚禮貌夕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘民镜。我一直安慰自己啡专,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布制圈。 她就那樣靜靜地躺著们童,像睡著了一般。 火紅的嫁衣襯著肌膚如雪离唐。 梳的紋絲不亂的頭發(fā)上病附,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音亥鬓,去河邊找鬼完沪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嵌戈,可吹牛的內(nèi)容都是我干的覆积。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熟呛,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼宽档!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起庵朝,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤吗冤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后九府,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椎瘟,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年侄旬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肺蔚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儡羔,死狀恐怖宣羊,靈堂內(nèi)的尸體忽然破棺而出璧诵,到底是詐尸還是另有隱情,我是刑警寧澤仇冯,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布之宿,位于F島的核電站,受9級(jí)特大地震影響苛坚,放射性物質(zhì)發(fā)生泄漏澈缺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一炕婶、第九天 我趴在偏房一處隱蔽的房頂上張望姐赡。 院中可真熱鬧,春花似錦柠掂、人聲如沸项滑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枪狂。三九已至,卻和暖如春宋渔,著一層夾襖步出監(jiān)牢的瞬間州疾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工皇拣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留严蓖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓氧急,卻偏偏與公主長得像颗胡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吩坝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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