UI适配在安卓开发中一直是一个很头疼的问题,由于安卓手机品牌型号的众多,目前又新出了一个刘海屏,就导致适配问题很难完全兼顾
目前来说适配方案有代码适配 , 布局适配
dp适配虽然可以兼顾大部分手机,但有些特殊的屏幕,不是标准的比例,显示出来的结果就会有所差异
如果想了解更详细的内容可以去鸿阳的博客中查看,用法也很简单
这样的设计图开发中很常见吧,有些公司可能需要自己去测量。
布局直接抄设计图上的尺寸
Item的布局文件,就是这么写:
不同分辨率下的效果:
768*1280,Andriod 4.4.4
480*800,Android 2.3.7
就是在项目中针对你所需要适配的手机屏幕的分辨率各自建立一个文件夹。更多详细内容请移步鸿阳 Android 屏幕适配方案
如下图:
然后我们根据一个基准,为基准的意思就是:
比如480*320的分辨率为基准
例如对于800*480的宽度480:
生成代码的工具类鸿阳大神也已经为我们提供 ,非常方便 移步至 工具类下载地址
此方法是利用代码去适配,在每个activity中调用封装好的方法即可,通过计算出屏幕的真实密度来重新转换 (DisplayMetrics 中和 dp 转换相关的变量)。
代码如下 , 如果想了解更加详细的介绍 请移步至今日头条适配方案
这种和宽高限定符适配原理上是一样的,都是系统通过特定的规则来选择对应的文件。只不过此种方法比宽高限定符有着更好的容错机制,比如说 宽高限定符中如果没有当前手机的屏幕的文件夹 ,那么就去找默认的文件夹,然而此时就又回到了原点 , 而smallestWidth 在没有找到相对应的文件的时候 , 系统会向下寻找,比如离360dp最近的只有value-sw350dp,那么Android就会选择value-sw350dp文件夹下面的资源文件 ,这样适配的后的 差距 就不会那么大
第一种后缀:sw
这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
第二种后缀w
带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和sw
第三种后缀h
这个后缀的使用方式和w
以下是可以使用的通用屏幕尺寸的一些值:
1.320,针对以下屏幕配置的设备:
240x320ldpi(QVGA手持设备)
320x480mdpi(手持设备)
480x800hdpi(高分辨率手持设备)
2.480,针对480x800mdpi的屏幕(平板或手持设备)
3.600,针对600x1024mdip的屏幕(7英寸平板)
4.720,针对720x1280mdip的屏幕(10英寸平板)
那么肯能有些人就要问怎么才能生成这些文件呢, 作者也给我们提供了一个方便快捷的工具类 , 注意是 java项目
工具类地址
使用方法:
运行该Java工程,会在本地根目录下生成相应的文件,如果需要生成更多尺寸,在DimenTypes 文件中填写你需要的尺寸即可。
推荐的尺寸为 : 300,320,360,411,450,这几个尺寸是比较必要的,然后在其中插入一些其他的尺寸即可,如果不放心,可以在300-450之间,以10为步长生成十几个文件。
你也可以直接引用架构中生成好的文件 直接复制到你的项目中即可
以上就是,安卓框架搭建(九)UI适配适配方案,的全部内容 ,
如有不了解的 可以去github下载源码 本章节内容为分支9
github源码地址,本章节见dev9分支
或 加入安卓开发交流群:安卓帮595856941
下一篇: