values在碎片化各种屏幕中的系统加载策略问题探讨

  • android寻找资源策略
  • values 两种系统识别文件夹,细分三种
  • 几种方式系统加

image

android寻找资源策略

image

values 两种系统识别文件夹,细分三种

values-XXXXxXXXX values-swXXXdp (values-hXXXdp values-wXXXdp)三种系统识别的文件夹命令分别是指定分辨率,适配优先宽度,宽高适配

几种方式系统加载策略的探索

项目中使用到了多个values来进行适配的问题,想从根本上弄清楚系统在加载的时候,对文件夹取用策略的判断问题,用实际例子对比了一下swXXXdp与values-1920X1080和默认的values的加载其中的策略指定问题,混合模式下,系统对values的取用问题。
ok,开始吧。

添加values-1790X1080,values-1794X1076,values-1794X1080与values-sw361dp
前三个文件夹用来对比在跟屏幕真实分辨率相差一些数值的时候,系统会加载那个文件夹下的配置。
先用三个文件夹运行,观察结果:

加载了,values-sw361dp

当然是运行的完美契合的那个分辨率了,那么当我们在实际开发的时候,屏幕碎片化太大的时候,这种情况是可遇不可求的,故而需要去测试系统对与不完美契合的情况的处理,删除掉完美契合文件夹:

删除掉之后

运行结果是:

1920X1148

加载到了1920X1148的values,那么说明在 1916X1152 与 1920X1148两个相近的宽高差值相同的文件夹中选择了高来进行优先选择,但是不能排除系统是把第一参数进行对比,而不是将values的匹配高进行优先匹配的,好吧,下面验证一下:
改名为:

删除资源

运行结果:

加载的还是高匹配高的那个文件夹,那么结论:系统对不能完美匹配的values文件,遵循的是,宽高差值绝对值进行对比,如果宽高对于当前屏幕分辨率差值小的进行加载,如果当宽高绝对值差值相同的时候,以高匹配度高的values进行加载。
上面对比了在使用px来区分values的一些加载规则,那么当swXXXdp出现的时候,(sw----small width)小宽度概念,当系统的宽度dp值大于该值的时候,加载这套设置。
问题在于dp与px方式同时出现的时候,系统对于优先级的判定问题。下面进行判定:
加入混合的值文件夹:

运行结果:

算是一个小总结

google还是对dp情有独钟啊,1152/3= 384dp跟360还差那么多,要是在一个水平线上来进行对比的话,真真的应该加载1920X1152啊,完美适配的呢,说好的做彼此的天屎的,呸,天屎,算了。
但是不管google怎么优先级,从细分上来说,如果是为了适配smartbar这个坑的话,一般来说,用px的values-1920X1152方式来进行细分适配要更加的精确,更能完美处理掉这个问题,毕竟还是在同一个水平上来处理的。但是官方是推sw-XXXdp的。
综上所述:
values-swXXXdp > values-XXXXxXXXX > values ;
注: values-XXXXXxXXXXX 方式的时候,通过宽高跟屏幕分辨率的差值绝对值来进行对比,优先高。
好吧,可能有人在等源码,我一起放上来吧

传送门之大传送之术

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值