1. 程式人生 > >螢幕適配——系統升級android 8.0 部分UI出現錯亂——“可用螢幕解析度”

螢幕適配——系統升級android 8.0 部分UI出現錯亂——“可用螢幕解析度”

這兩天將自己的mate9從7.0升級到8.0發現一個問題,app的某個ui介面部分錯亂了;因為螢幕適配使用了dimens適配,所以猜測有可能螢幕規格沒有覆蓋到;但是發現mate9的螢幕解析度為1920*1080,查看了dimens檔案是有覆蓋的,為什麼7.0時候沒有問題,升級到8.0出現了這個問題,經過不斷嘗試推斷出如下結論,在此記錄下:

  • android 8.0以下版本(不包含)
    螢幕解析度 y*x,適配時會優先找y1<=y x1<=x的dimens適配檔案;如果找不到就一直向上找,一直找最接近的並且符合要求的;
    如:oppo r11 系統版本7.1 螢幕解析度1920*1080,適配時候會優先找 y1<=1920 x1<=1080 的dimens檔案

  • android 8.0及以上版本(包含)
    螢幕解析度為y*x,可用螢幕解析度(y-n) * x,這裡的n是狀態列和底部虛擬導航欄的高度,適配時候會優先找 y1<=y-n x1<=x;如果找不到就一直向上找,一直找最接近的並且符合要求的;
    如華為mate9 升級到8.0 螢幕解析度調成1920*1080,可用螢幕解析度 1808*1080(使用開發助手檢視),適配時候回優先找y1<=1808 x1<=1080的dimens檔案

個人觀點(自己使用的dimens適配):
橫向: match_parent>權重>dimens
縱向:dp>dimens的x值