Android多屏幕适配
前段时间在开发APP的平板适配,经过一段时间的学习、整理、填坑后,写下了这篇文章。
理论
在Android开发中使用的单位都是dp和sp(字体大小),这个不是由屏幕的尺寸决定的而是取决于dpi,所以对于屏幕适配我们着重考虑dpi。
注:dpi是每英寸的像素点数,单位是dp(密度无关像素)
说到屏幕适配,就不得不说一下目前Android设备的屏幕尺寸了。支持多种屏幕
Android屏幕分布如上图,目前手机主流的dpi是xhdpi和xxhdpi两种,平板均是xhdpi。
适配
一般适配,我们通过对资源使用配置限定符
表1 表21.对于需要加载图片资源的View、layout使用wrap_content设置高度,根据不同dpi图片进行高度自动适配
wrap_content设置高度2.根据不同的分辨率加载不同的布局,如平板和手机分别加载不同的布局:在layout和layout-sw600dp目录下创建相同名字的布局
加载不同的布局3.在同一个布局中,可以根据配置values的限定符来实现控件的尺寸、位置、大小的控制,如分别在values和values-sw600dp目录下创建dimens文件展示不同的字体大小
配置values的限定符4.最后可以用代码判断当前设备的屏幕宽度dp来做不同的处理
用代码判断当前设备的屏幕宽度dp结果展示:
手机展示 平板展示填坑
1.平板和低分辨率手机都是dpi相同,从一图我们可以看到,两者均是xhdpi。那么我们如何区分呢?
不要急,先看下官方文档:提供资源。
提供资源中的表2.就是配置限定符名称(由于表格过长就不展示了),在表2的下方有限定符命名规则。如图:
微信截图_20180104161606.png其中红框中的比较重要:
第一点,表示我们可以指定多个限定符
第二点,表示我们必须遵循表2中的列表的顺序。
OK!这样对于平板和手机的区分可以写成这样mipmap-xhdpi和mipmap-sw600dp-xhdpi。
对于最后一点,表示系统会为我们找最优的结果,如果找不到则会去在默认资源中寻找,这样不用每个目录把所有资源都放进去。
总结
自此,关于屏幕适配基本就讲完了。这里没有做过多细节的讲解,主要是提供思路抛砖引玉,如果有什么不清楚的地方可以看我的Demo源码,也可以看官方文档:支持多种屏幕 和 提供资源。
网友评论