Android 屏幕適配方案解析(一)

自Android系統(tǒng)發(fā)布以來,似乎一直繞不開屏幕適配這個(gè)話題。毫無疑問,Android系統(tǒng)能發(fā)展到今天,離不開其開放性,而隨著國內(nèi)手機(jī)廠商的崛起,任何用戶、開發(fā)者、OEM廠商、運(yùn)營商都可以對(duì)Android進(jìn)行定制,于是導(dǎo)致長期以來一直詬病的碎片化嚴(yán)重的問題。
例如:

  • 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)碎片化的時(shí)候,就很容易出現(xiàn)同一元素在不同手機(jī)上顯示不同的問題,為了保證某一元素在Android不同尺寸、不同分辨率的手機(jī)上具備相同的顯示效果,這個(gè)時(shí)候就需要對(duì)屏幕進(jìn)行適配啦。

屏幕尺寸

屏幕尺寸指屏幕的對(duì)角線的物理長度,單位是英寸,1英寸=2.54厘米。

比如常見的屏幕尺寸:5.0、5.99、6.0等等

屏幕分辨率

屏幕分辨率是指手機(jī)在橫向、縱向上的像素點(diǎn)數(shù)總和,單位是px,1px=1個(gè)像素點(diǎn),一般以縱向像素*橫向像素。

比如分辨率2160x1080的手機(jī),表示高度上有2160個(gè)像素點(diǎn),而寬度上有1080個(gè)像素點(diǎn),屏幕分辨率為:2160*1080。

Android手機(jī)比較常見的分辨率為:320x480、480x800、720x1280、1080x1920。

屏幕像素密度

屏幕像素密度是指每英寸上的像素點(diǎn)數(shù),單位是dpi,即“dot per inch”的縮寫。

比如設(shè)備內(nèi)每英寸有320個(gè)像素,那么該設(shè)備的屏幕像素密度=320dpi。

屏幕尺寸、分辨率、像素密度三者關(guān)系

屏幕像素密度與屏幕尺寸和屏幕分辨率有關(guān),在單一變化條件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

手機(jī)的屏幕分辨率是寬x高,屏幕大小是以寸為單位,那么三者的關(guān)系是:
image.png

這里舉個(gè)例子:假如手機(jī)的屏幕分辨率是2160x1080,屏幕大小是5.99英寸,對(duì)于一部手機(jī)來說這些都是已知的,求這手機(jī)的像素密度是多少?


image.png

即該手機(jī)每英寸有403個(gè)像素。

px

px即像素,是屏幕上顯示數(shù)據(jù)的最基本的點(diǎn),上面介紹屏幕分辨率的單位就是px,包括UI設(shè)計(jì)圖、Android原生API都會(huì)以px作為統(tǒng)一的計(jì)量單位。

dpi

dpi即屏幕像素密度,每英寸上的像素點(diǎn)數(shù),計(jì)算方式上面已經(jīng)介紹過了,這里就不重復(fù)啦。

dp、dip

dp應(yīng)該比較熟悉,我們?cè)O(shè)置固定數(shù)值的時(shí)候都是以dp為單位,而dp和dip是一個(gè)意思,都是Density Independent Pixels的縮寫,即密度無關(guān)像素,與終端上的實(shí)際物理像素點(diǎn)無關(guān),可以保證在不同屏幕像素密度的設(shè)備上顯示相同的效果。

舉個(gè)例子:比如我們想設(shè)置一張圖片的寬度為屏幕的一半,那么:

  • 如果以像素px為單位,那么我們需要在320x480分辨率的手機(jī)上設(shè)置寬度為160px,而在480x800分辨率的手機(jī)上設(shè)置寬度為240px,兩者的設(shè)置寬度就不一樣了。
  • 而如果以dp為單位,在這兩種分辨率下,設(shè)置寬度為160dp都顯示為屏幕的一半。

sp

sp即scale-independent pixels,與dp類似,通常用于指定字體的大小,當(dāng)用戶修改手機(jī)顯示的字體時(shí),字體大小會(huì)隨之改變。

dp與px的轉(zhuǎn)換

通常UI設(shè)計(jì)師給的設(shè)計(jì)圖是以px為單位的,Android開發(fā)則是使用dp作為單位的,那么我們需要進(jìn)行轉(zhuǎn)換,換算關(guān)系為:

px = dp * (dpi / 160)
image.png

在Android中,規(guī)定以160dpi(即屏幕分辨率為320x480)為基準(zhǔn):1dp=1px

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容