屏幕适配——系统升级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值

你可能感兴趣的:(android)