为什么要适配
如何选择方案?不同的方案差别的关键点在于:效率和质量。在保证多屏幕、适配的目标下,我们要尽可能多的提高效率。
主流屏幕适配方案
一下几种适配方案都是已经在实际用开发中的比较成熟的方案,而且确实有很多开发者正在使用。不过他们各自也都存在一些缺陷。
dp适配
不足
- 部分设备dpi另类,无法适配;
- 设计稿和实现间单位不同(dp、px),实现效率低。
AndroidAutoLayout
鸿阳大神的名作。不再维护了很可惜。
不足
- 框架在运行时会在onMeasure里面做变换,自定义的控件和特定的控件,可能会被影响或限制。
- 项目与布局大小耦合度高。项目出问题时,可能重写全部布局。
宽高限定符
在res目录下,创建多种values-1280x720,dimen去限定。
以下必须加?
<supports-screens android:largeScreens="true"
android:normalScreens="true" android:anyDensity="true" />
不足
- 容错机制差,需精准命中具体尺寸;
- 繁多的宽高尺寸,效率低。
smallestWidth适配
sw600dp。推荐使用
dimens_sw 拉丁吴,生成sw文件的工具
使用:1. 在DimenTypes中设置需要的dp;2. 在DimenGenerator设置设计稿宽高;3. 执行DimenGenerator.main()。
不足
- 最低支持Android 3.2;
- 多dimens文件导致安装包增大,在kb级别可接受;
今日头条屏幕适配方案
原理
DisplayMetrics.density控制影响着Android界面的拉伸效果,通过改变此成员变量达到适配的目的。
DisplayMetrics#scaledDensity和DisplayMetrics#density不可设置为同样的值。否则会导致字体大小失效。
还要监听下字体切换,调用 Application.registerComponentCallbacks() 注册下 onConfigurationChanged 监听即可。在切换字体时更改参数。
强烈推荐使用。
不足
- 老项目中,可能需重改布局;
资料
- 一种极低成本的Android屏幕适配方式
- AndroidAutoSize
- 骚年你的屏幕适配方式该升级了!-1今日头条适配方案
- 骚年你的屏幕适配方式该升级了!-2SmallestWidth 限定符适配方案
- 今日头条屏幕适配方案终极版正式发布!-3
- Android今日头条UI适配完善版
资料
- 九月Android版本分布图公布:朝Android Nougat靠拢
- 2016APP界面视觉设计尺寸规范大全
- 全域罗盘 报告 友盟数据统计:设备、分辨率、尺寸、系统
程序图标尺寸
48 * 48
72 * 72
96 * 96
144 * 144
192 * 192
宽高主流数据
本段落中除特殊标明外,都是dp单位。
300,320,360,411,450,这几个尺寸是比较必要的。可在其中以10为单位增加几个。
平板适配情况:
不专门适配:不要生成480以上的适配文件,这样在平板上,系统就会使用480这个尺寸的dimens文件;专门适配:一般在600-800之间,关键尺寸是640,768。按照设计图走即可。
资料
- Android 目前最稳定和高效的UI适配方案
- Android最简单屏幕适配,项目用dp,sp的只需加一行代码
- Android屏幕适配经验谈
- Android屏幕适配全攻略(最权威的官方适配指导)
- 关于Android适配,看完这篇文章就够
- 仿京东app 采用组件化架构 屏幕适配方案可以较好解决多分辨率及同分辨率不同dpi适配
- Android 目前稳定高效的UI适配方案
- 看完不会Android屏幕适配我跪搓板
平板
资料
标题
重点内容
如何创建不同版本下的dimens。类似hdpi,xhdpi。
如何找到当前主流设备属性
A,系统版本
1,Android Studio中分布图;2. U盟等第三方数据统计;3. 主流厂商产品统计
B,分辨率
C,屏幕尺寸