屏幕适配(一) 点击打开链接
=================================
----android如何查找最佳匹配资源?
Android会根据当前的设备配置选择要在运行时使用的备用资源。
-------Android是怎么匹配图片资源的?
----------以 mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi作为扩展名
当应用在设备对应dpi目录下没有找到某个资源时,遵循“先高再低”原则,然后按比例缩放图片:
比如,当前为xhdpi设备,并且只有以下几个目录,则drawable的寻找顺序为:
xhdpi->xxhdpi->xxxhdpi(如果没有更高的了)->nodpi(如果有的话)->hdpi->mdpi,
如果在xxhdpi中找到目标图片,则压缩2/3来使用,如果在mdpi中找到图片,则放大2倍来使用。
-----详细解读
--------Android是怎么匹配布局资源的?
----------以1920*1080形式作为扩展名
单向检索,只匹配比自己小的,绝不往上去匹配;屏幕分辨率以720*1280为例
系统先检索720*1280及其附近的(720*1300等),如果匹配失败,则向下检索(480*800等),直至检索的到默认(320*480),如果向下检索得不到匹配,
则应用挂掉,运行时异常。
*******以上规律对屏幕适配没有任何帮助;----------以 mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi作为扩展名
比如,当前为xhdpi设备,并且只有以下几个目录,则layout的寻找顺序为:
xhdpi->xxhdpi->xxxhdpi(如果没有更高的了)->nodpi(如果有的话)->hdpi->mdpi,
--------Android是怎么匹配values资源的?
----------以 mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi作为扩展名
values目录用来放置colors.xml,dimens.xml,strings.xml等,也可以根据屏幕密度设置特定的values目录让满足设定的设备进行加载,比如values-mdpi、values-hdpi、values-xhdpi、values-xxhdpi等等,然后每个目录放置一个demins.xml,使不同分辨率的设备应用不同的尺寸设置。当应用设备在当前dpi对应目录的demins.xml中没有找到目标条目时,采用“就近匹配”原则:
- 比如,当前为hdpi设备,并且只有以下几个目录,则values的寻找顺序为:
hdpi->xhdpi->mdpi->values,即先向上级dpi目录查找,再向下级dpi目录查找,最后一路向下查找到values目录,如果values下都找不到,就只有找values-ldpi,当然,现在有这个目录的应用不多了。
----------以1920*1080形式作为扩展名