最近我在網路上看到這個 抱著好奇的心態試了一下 發現好像有點東西啊?
我也不私藏 分享給大家知道:
優就業Android-使用最小寬度限定符時最小寬度的計算
2016-05-19 由 IT優就業 發表于3C
Android開發中最頭疼的問題之一就是兼容不同尺寸和解析度的設備。
這裡推薦一篇總結的比較完整的《Android開發:
最全面、最易懂的Android屏幕適配解決方案》。
這篇文章對屏幕兼容的許多問題都做了詳述,這裡只補充一點,就是關於在使用最小寬度限定符時這個最小寬度的該如何計算。
最小寬度限定符可以使用一個與屏幕像素密度無關為單位(dp)的數值區分出的不同設備,以應用不同的資源。
如下圖中values-sw600dp的sw表示最小寬度,那麼600dp是如何確定的呢?
舉個例子:一般情況下我們可以容易知道設備的解析度和尺寸的參數。
比如現在有
平板A(解析度1280*720px,尺寸是8inch)
手機B(解析度1920*1080px,尺寸是5.7inch)
手機C(解析度1280*720px,尺寸是5inch)。
通過下面的屏幕像素密度的計算公式,我們可以分別計算出他們的屏幕像素密度:
平板A約為184dpi
手機B約為386dpi
手機C約為293dpi
公式1: dpi 密度=√(長 px^2 + 寬 px^2 )/ 尺吋 lnch
接下里需要注意的是,最小寬度是不考慮橫屏或豎屏的,也就是說最小寬度是設備屏幕四條邊里最短的那兩條邊。
如果需要考慮橫豎屏那麼可以加入屏幕方向限定符,這不在我們討論之列。
那麼接下來我們取最短邊的像素數,並通過下面的公式計算最小寬度(dp):
平板A約為626dp
手機B約為448dp
手機C約為393dp
公式2: 最小寬度 dp= 寬 px*160/ 密度 dpi
如上,使用600dp就可以區分出平板和手機兩類設備,如果需要詳細區分手機B和C可以再考慮設置sw400dp作為區分。
心得:算法是這樣的 假設我的螢幕解析度是2340*1080px 尺寸是6吋
(如果有人不知道自己機子的型號 可以去手機王找 那邊有寫)
套用第一個公式就是√(2340*2340+1080*1080)/6=430dpi
接著第二個公式dp=寬(最小的那個像素)1080*160/430=~402dp(答案)
在把得到的答案套入至設定>系統>開發人員選項>最小寬度(記得初始值抄起來 我怕你算錯就GG了)>填入答案402>確定
這樣就完成螢幕適配了!螢幕會變得很順 我試過玩遊戲調成適當的設定
我用Google P5 S765G玩原神 雖然到不能全開的地步(全開短時間會過熱) 設定之前跟之後相比 畫面就變得很柔順 卡頓感也變少了
如果大家有其他機子實驗過後的心得 歡迎一起討論!