解决这个问题的办法网上有很多,经过不断的查找资料、尝试、寻求帮助后,经过尝试之后初步整理出一种解决方法:理论的东西我就不多说了,主要说一下如何实现的问题
我主要介绍,通过drawable,layout,dimens.xml来解决适配的问题:
首先,需要弄清出需要适配的移动设备的基本情况,推荐使用“手机分辨率测试”这个软件,可以在360手机助手中查找下载。
测试结果如下:
从测试的结果可以看出,设备的密度dpi是320,应该是xhdpi
一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi
对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚
对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚
其次,开始正式实现:
根据测试中dpi的结果,写不同的资源文件,一般情况下,
写一个layout文件夹,写一套布局文件;
根据需要适配的设备的dpi不同创建不同的drawable和values文件夹,如:
在下面的图片资源文件中存放不同分辨率的图片
drawable:主要放置xml配置文件或者对分辨率要求较低的图片
drawalbe-ldpi:120dpi低分辨率的图片,如QVGA (240x320)
drawable-mdpi:160dpi中等分辨率的图片,如HVGA (320x480)
drawable-hdpi:240dpi高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
drawable-xhdpi:320dpi至少960dp x 720dp
drawable-xxhdpi:1920dpx1080dp
在面的资源文件夹中添加dimens.xml
values:
values-ldpi:120dpi
values-mdpi:160dpi
values-hdpi:240dpi
values-xhdpi:320dpi
在layout的布局文件中,各种间距宽度高度都不要写死成具体的数值,如
android:layout_width="300dp"(不推荐)
而是使用下面的方式来替代:
在对应的values文件下的dimens.xml中如下:
通过上面的方法之后,当需要适配其他屏幕设备的时候,不需要再去改动layout,只需要对dimens中的值进行调整就可以了。这样可以减少对代码的维护难度
最后:
在中Menifest中添加子元素
android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。
相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源
以上方法只是个人的理解之上写出来的,如果有不对的或是更好的建议,欢迎大家指导,谢谢!