Android屏幕适配

雪之祭司 9年前

来自: http://my.oschina.net/reborn87/blog/610406


关于屏幕适配,建议大家先看看一下几篇大神的文章,相信会对适配有一个很详细的了解:

看完以上五篇之后,讲讲在我的项目中是如何进行屏幕适配的:

    其实我也是第一次做适配,也想使用最简单的方式(AutoLayout),只可惜集成之后,不见效果,于是乎就只好求其次,使用第二篇文章讲述的方式,该方式几乎能匹配上市面上所有的手机,当然也会在个别手机上出现问题,譬如魅族以及底部含有虚拟按键的手机(主要是HTC)。

    其实出现问题的原因,在于没有找到对应的value文件夹,于是就找了一个接近的(匹配规则可查看:Android屏幕适配-资源文件夹命名与匹配规则)凑合,具体找了哪一个,这个真不好说,于是采用笨方法:删除后添加的所有value文件夹及文件(首先做好备份),只保留默认的value文件夹,然后将认为可能的value文件夹中的文件丢到默认文件夹中,生成新的安装包查看效果。这样测试要测试到猴年马月,于是继续Google,最后发现这些失真都是因为底部虚拟按键的原因,导致匹配value文件夹的时候不会找对应的value文件夹,譬如:1920x1080屏幕,按道理屏幕适配的是,会自动寻找values-1920x1080目录,但实际上并非如此,那么针对这样情况该如何处理,其实重新生成一份values文件夹即可,不过高度不能再是1920,得剪去底部虚拟按键的高度,重新生成的value文件为values-1620x1080,对于底部虚拟按键的高度,也没详细研究,我是这样计算的1280->200,按照这样比例计算,1920->300。

    被屏幕适配折磨几天,最后总算搞定,一边尝试一边摸索,也得感谢各位大佬无私分享自己的经验,让自己少走一些弯路。

ps:对于高度的设置,有人认为直接使用@dimen/x...就可以,但这样在有底部导航栏的时候就会出现问题,该适配主要是高度引起变化,因此此时的宽高不在是正常屏幕的宽高了,所以建议设置高度的时候,还是写成如下:

android:layout_height="@dimen/x450"(不建议使用)
android:layout_height="@dimen/y450" (建议使用)


对于如何生成values文件,相应的jar下载链接:https://github.com/hongyangAndroid/Android_Blog_Demos/tree/master/blogcodes/src/main/java/com/zhy/blogcodes/genvalues

运行指令:java java -jar autolayout.jar 1440 2560 1080,1920_768,1280 (红色标记的是你的原型图的宽高,也可称作values文件的基准屏幕)