自Android系統(tǒng)發(fā)布以來酸舍,似乎一直繞不開屏幕適配這個話題帅刀。毫無疑問,Android系統(tǒng)能發(fā)展到今天魁莉,離不開其開放性子库,而隨著國內(nèi)手機(jī)廠商的崛起枫笛,任何用戶、開發(fā)者刚照、OEM廠商刑巧、運(yùn)營商都可以對Android進(jìn)行定制,于是導(dǎo)致長期以來一直詬病的碎片化嚴(yán)重的問題无畔。
Android全面的屏幕適配方案解析(一)__屏幕適配概念梳理
Android全面的屏幕適配方案解析(二)__寬高限定符屏幕適配
Android全面的屏幕適配方案解析(三)__sw限定符適配方案
Android全面的屏幕適配方案解析(四)__今日頭條適配方案
例如:
Android系統(tǒng)碎片化啊楚,比如基于Google原生系統(tǒng)定制:小米的MIUI系統(tǒng)、魅族的Flyme系統(tǒng)等等浑彰。
Android屏幕尺寸碎片化恭理,比如5寸、5.99寸郭变、6寸等等颜价。
Android屏幕分辨率碎片化,比如320x480诉濒、480x800周伦、720x1280、1080x1920等等未荒。
而當(dāng)Android系統(tǒng)专挪、屏幕尺寸、屏幕密度出現(xiàn)碎片化的時候片排,就很容易出現(xiàn)同一元素在不同手機(jī)上顯示不同的問題寨腔,為了保證某一元素在Android不同尺寸、不同分辨率的手機(jī)上具備相同的顯示效果率寡,這個時候就需要對屏幕進(jìn)行適配啦迫卢。
屏幕適配相關(guān)概念:
屏幕尺寸
屏幕尺寸指屏幕的對角線的物理長度,單位是英寸冶共,1英寸=2.54厘米乾蛤。
比如常見的屏幕尺寸:5.0、5.99比默、6.0等等
屏幕分辨率
屏幕分辨率是指手機(jī)在橫向幻捏、縱向上的像素點(diǎn)數(shù)總和,單位是px命咐,1px=1個像素點(diǎn)篡九,一般以縱向像素*橫向像素。
比如分辨率2160x1080的手機(jī)醋奠,表示高度上有2160個像素點(diǎn)榛臼,而寬度上有1080個像素點(diǎn)伊佃,屏幕分辨率為:2160*1080。
Android手機(jī)比較常見的分辨率為:320x480沛善、480x800航揉、720x1280、1080x1920金刁。
屏幕像素密度
屏幕像素密度是指每英寸上的像素點(diǎn)數(shù)帅涂,單位是dpi,即“dot per inch”的縮寫尤蛮。
比如設(shè)備內(nèi)每英寸有320個像素媳友,那么該設(shè)備的屏幕像素密度=320dpi。
屏幕尺寸产捞、分辨率醇锚、像素密度三者關(guān)系
屏幕像素密度與屏幕尺寸和屏幕分辨率有關(guān),在單一變化條件下坯临,屏幕尺寸越小焊唬、分辨率越高,像素密度越大看靠,反之越小赶促。
手機(jī)的屏幕分辨率是寬x高,屏幕大小是以寸為單位衷笋,那么三者的關(guān)系是:
這里舉個例子:假如手機(jī)的屏幕分辨率是2160x1080芳杏,屏幕大小是5.99英寸,對于一部手機(jī)來說這些都是已知的辟宗,求這手機(jī)的像素密度是多少?
即該手機(jī)每英寸有403個像素吝秕。
px
px即像素泊脐,是屏幕上顯示數(shù)據(jù)的最基本的點(diǎn),上面介紹屏幕分辨率的單位就是px烁峭,包括UI設(shè)計(jì)圖容客、Android原生API都會以px作為統(tǒng)一的計(jì)量單位。
dpi
dpi即屏幕像素密度约郁,每英寸上的像素點(diǎn)數(shù)缩挑,計(jì)算方式上面已經(jīng)介紹過了,這里就不重復(fù)啦鬓梅。
dp供置、dip
dp應(yīng)該比較熟悉,我們設(shè)置固定數(shù)值的時候都是以dp為單位绽快,而dp和dip是一個意思芥丧,都是Density Independent Pixels的縮寫紧阔,即密度無關(guān)像素,與終端上的實(shí)際物理像素點(diǎn)無關(guān)续担,可以保證在不同屏幕像素密度的設(shè)備上顯示相同的效果擅耽。
舉個例子:比如我們想設(shè)置一張圖片的寬度為屏幕的一半,那么:
- 如果以像素px為單位物遇,那么我們需要在320x480分辨率的手機(jī)上設(shè)置寬度為160px乖仇,而在480x800分辨率的手機(jī)上設(shè)置寬度為240px,兩者的設(shè)置寬度就不一樣了询兴。
- 而如果以dp為單位乃沙,在這兩種分辨率下,設(shè)置寬度為160dp都顯示為屏幕的一半蕉朵。
sp
sp即scale-independent pixels崔涂,與dp類似,通常用于指定字體的大小始衅,當(dāng)用戶修改手機(jī)顯示的字體時冷蚂,字體大小會隨之改變。
dp與px的轉(zhuǎn)換
通常UI設(shè)計(jì)師給的設(shè)計(jì)圖是以px為單位的汛闸,Android開發(fā)則是使用dp作為單位的蝙茶,那么我們需要進(jìn)行轉(zhuǎn)換,換算關(guān)系為:
px = dp * (dpi / 160)
在Android中诸老,規(guī)定以160dpi(即屏幕分辨率為320x480)為基準(zhǔn):1dp=1px
以上的概念梳理一遍過后隆夯,下面就要開始講解適配方案啦,由于篇幅過長别伏,就分開幾篇更新蹄衷,敬請期待。歡迎關(guān)注公眾號【龍旋】能獲取最新更新內(nèi)容哦厘肮。