问题由来
最近开发需要处理在有下方虚拟键和无虚拟键时使用不同的图片。也就是不同大小的屏幕匹配不同的资源,只不过这两个屏幕区别有点小。
解决过程
1.查询网上资源,在drawable文件夹名称加-navexposed后缀就是判断导航键对用户可用,如drawable-xxhdpi-navexposed。这里get到的知识点是,后缀也有优先级,如果写成drawable-navexposed-xxhdpi会报错。但是不起作用。不知这个navexposed所说的导航键到底是不是下方那三个虚拟键。此方法无解。
2.通过上条方法查到的资料里面有使用后缀限制屏幕大小的,如drawable-h720dp-xxhdpi,意思是指定最小的可用屏幕高度为720dp。此方法也许可解,通过WindowManager获取屏幕高宽为1920*1080,在开启虚拟键后获取到的高宽为1776*1080。尝试将文件夹命名为drawable-h1920dp-xxhdpi,同样没效果,永远使用的是默认drawable-xxhdpi文件夹下的资源图片。似乎又无解。
3.使用单独精确适配后缀限制符还可以这么写drawable-xxhdpi-800x480,在研究此方法时,get另一个知识点,后面所写的800x480并不是直接通过WindowManager获取的1920*1080,还需要跟屏幕密度换算一下,通过获取DisplayMetrics.density=3,也就是此手机1dp有三个像素。因此需要写成drawable-xxhdpi-640x360,有虚拟键的1776/3=592应该写成drawable-xxhdpi-592x360,验