看了很多资料,然后自己实践完总结下:
1.看了鸿神博客有个方法,就是他写了个java文件或者一个jar可以生成以一种分辨率为基准的其他分辨率文件夹:“values-1920x1080”,“values-1280x720”等等,设备在运行的时候会自动寻找加载对应的文件夹,没有对应的则系统会到默认的“values”文件夹去加载资源文件,在values文件夹定义dimen标志然后定义px像素。
2.在命名values文件夹时,大的数字要放前面,前面的数代表水平,不然IDE不通过。
3.做适配时应当获取手机实际分辨率,因为有很多手机有虚拟按键,虚拟按键也计算在手机的规格中,所以应当用代码去计算手机实际分辨率,然后在根据计算得出的分辨率命名values文件夹,不然手机找不到values文件夹会报错,可能会报“You must supply a layout_width attribute”。获取分辨率代码:
4.因为写不完所有分辨率的values资源文件,所以可以采取屏幕密度来命名values文件夹,屏幕密度是这样的概念:Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个pixel,计算公式如:px = dp * (dpi / 160),当设备的dpi为160的时候1px=1dp, 获取屏幕密度代码:
我的理解是相当于这个手机是dpi为480,按照公式的话相当于1dp=3px。
所以可以把values文件夹命名为xxhdpi等。
5.
6.在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。
7.可以跟给drawable设定控制符一样,给layout文件夹加标记:layout-hdpi,layout-xxhdpi。
8.屏幕密度可以这样算,用屏幕分辨率勾股定理求出对角线长度,然后除以尺寸,就是每英寸像素点。
参考资料有:
鸿神的Android屏幕适配方案- http://blog.csdn.net/lmj623565791/article/details/45460089
http://blog.csdn.net/qeqeqe236/article/details/42968805
http://blog.csdn.net/icewst/article/details/38685319
http://www.jianshu.com/p/6319e43572fa