我们常见资源文件里面有些布局dimens适配,在values文件优先级问题上,比较容易混淆,写个文档,以备参考。
“在android3.2以前,所有的资源文件都有相应的xhdpi,hdpi,mdpi,ldpi四种文件来对应,android3.2以后,为了提供更精准的对布局文件的控制,可以通过为资源文件(res目录下文件)增加后缀来指定该文件夹里的xml布局文件或color.xml,string.xml是为哪种大小的屏幕使用。
第一种后缀:swdp,如layout-sw600dp, values-sw600dp
这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
第二种后缀wdp 如layout-w600dp, values-w600dp
带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和swdp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。
第三种后缀hdp 如layout-h600dp, values-h600dp
这个后缀的使用方式和wdp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用hdp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。”
上段引用自www.cnblogs.com/syangzhao/a…
一、对于这些常见values文件优先级依次递减如下:
values-sw720 ,values-w720(values-h720,不常用),values-xdpi,values-1080*720
二、关于dpi的读取先后顺序
最佳dpi——最接近的dpi 即未找到最佳dpi时,选择读取最接近自身dpi的资源文件夹进行读取,假如A手机屏幕为hdpi,资源文件夹下却没有values-hdpi文件夹,那么他读取的优先级可以为xhdpi——mdpi——values——ldpi(系统判定values比values-ldpi更接近于hdpi)
三、关于分辨率(如960x720)的读取先后顺序 最佳分辨率——向下读取的最接近的分辨率资源文件 假如res下现有两个values文件夹,一个为(values-960x720)另一个为 (values-900x600),现有一部山寨机屏幕分辨率并不标准,假定它为959x719, 那么当该部手机运行此程序时,所读取到values资源文件夹应为 (values-900x600),而不是与他更接近的但是比他分辨率要略高一点的 (values-960x720),即向下读取与他最为接近的适配文件