我理解中的今日頭條屏幕適配方案是通過(guò)修改系統(tǒng)的density,使每個(gè)view的寬度或者高度,占屏幕的百分比與最初設(shè)計(jì)開(kāi)發(fā)時(shí)一致.來(lái)達(dá)到適配效果
為什么需要適配?
計(jì)算公式: dp = px / density*
假設(shè)我們?cè)诓季治募袑?xiě)了一個(gè) 100dp * 100dp 的 View,這個(gè)View最終顯示到不同屏幕像素下面的大小是不一樣的
- 設(shè)備1: 屏幕寬度為 1080px江解,480dpi拆又,屏幕的寬度總dp = 1080 / (480 / 160) = 360dp
- 設(shè)備2: 屏幕寬度為 1440px,560dpi余佃,屏幕的寬度總dp = 1440 / (560 / 160) = 411dp
那么這個(gè)100dp * 100dp 的View
在設(shè)備1上面寬度占比 = 100dp / 360dp = 0.2777 = 27.28%
在設(shè)備2上面寬度占比 = 100dp / 411dp = 0.2433 = 24.33%
可以看到在這2個(gè)設(shè)備上面顯示出來(lái)占屏幕的百分比就不同,最終顯示的大小也不同,所以需要另外做適配
如何適配?
計(jì)算公式: dp = px / density*
我們平時(shí)在布局里面寫(xiě)的單位dp, 最終系統(tǒng)在顯示之前會(huì)用上面的計(jì)算公式轉(zhuǎn)換為px , 那么如果我們能根據(jù)不同的設(shè)備,計(jì)算出density, 然后賦值給系統(tǒng)再去計(jì)算,就能達(dá)到固定的百分比來(lái)適配不同的設(shè)備了
適配原理
假設(shè)我們當(dāng)前開(kāi)發(fā)中正在使用的設(shè)備的寬度是 375dp
而我們?cè)诓季种袑?xiě)了一個(gè)100dp * 100dp 的 View
那這個(gè)View在我們開(kāi)發(fā)的時(shí)候看到的效果就是:
占屏幕百分比 = 100dp / 375dp = 0.2666 = 26.67%
- 設(shè)備1: 屏幕寬度為 1080px呀打,480dpi肪虎,屏幕的寬度總dp = 1080 / (480 / 160) = 360dp
- 設(shè)備2: 屏幕寬度為 1440px,560dpi哮幢,屏幕的寬度總dp = 1440 / (560 / 160) = 411dp
那么在設(shè)備1中淆储,根據(jù)公式算出 density = px / dp = 1080px / 375dp = 2.88
再把density = 2.88賦值給系統(tǒng),這個(gè)時(shí)候?qū)挾?00dp 的View換算成px = 100dp * 2.88 = 288px
占屏幕百分比 = 288px / 1080px = 0.2666 = 26.67%
剛好和上面原來(lái)開(kāi)發(fā)中的占屏幕百分比相同
同樣的在設(shè)備2中家浇,根據(jù)公式算出 density = px / dp = 1440px / 375dp = 3.84
再把density = 3.84賦值給系統(tǒng)本砰,這個(gè)時(shí)候?qū)挾?00dp 的View換算成px = 100dp * 3.84 = 384px
占屏幕百分比 = 384px / 1440px = 0.2666 = 26.67%,也剛好和上面原來(lái)的占屏幕百分比相同钢悲,達(dá)到完美適配
如果還想了解更多關(guān)于今日頭條屏幕適配方案或者想具體使用到項(xiàng)目里面
騷年你的屏幕適配方式該升級(jí)了!-今日頭條適配方案