Android修行手册-几个适配方案【建议收藏】

简介: 众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)

👉即将学会

了解到市面上Android适配的几种方案,并且从中选择合适的技术。

👉背景

网络异常,图片无法展示
|

👉实践过程

😜数据报告

网络异常,图片无法展示
|

从Android诞生后没多久,适配就一直跟随至今。Android适配最核心的问题有两个,其一,就是效率的问题,开发者根据设计图写布局代码是否快速,其二如何保证在不同尺寸和分辨率的手机中的一致性。所以就诞生了各种适配方案。

😜传统适配

此适配是Android自带的,利用DP单位来根据手机分辨率尺寸大小来计算出对应所占的像素。Dp作为Android最基本原始的适配方案我们不做过多讨论了,如果可行的话市面上也不会有各种适配方案了。

😜限定符适配

为了解决这个适配问题,就出现了限定符适配的方案。就是直接列出市面全部宽高像素或最小尺寸。

分为两个方案宽高限定符和sw限定符

网络异常,图片无法展示
|

然后以产品目标设备分辨率作为参考系,小于她的做减运算,大于的做加运算。至于计算方程式可以谷歌查查。

缺点:

  1. 需要增加不少文件,有形中增加了包体积
  2. 那么多文件里面的dimen等等都得计算好搞进去,有一定工作量
  3. 宽高限定符致命缺陷是容错机制差,需要精准击中分辨率才好适配,否则就用默认的,sw限定符有容错性,没有对应的会向下寻找。

原理:开发者会提前生成一系列的values文件(如上图),当App运行后系统会自己去寻找和当前手机分辨率对应的资源文件夹,如果没有,宽高限定符方案会找默认的,sw限定符会向下寻找。

如果使用限定符方案的话推荐sw限定符方案。

😜全面屏适配

全面屏刚出那会,真的是全网刷屏啊,没多久市场上就出现了大量新产品,各种奇葩的设计全出来了,立马各种APP连夜开始适配各种工作了,真是苦了程序员。因为刚出来那会全面屏手机造型很乱,适配方案也是奇招百出。经过一段时间沉淀现在基本不约而同的遵守着共同的设计原则。

和传统的屏幕显示相比,最大的区别就是宽高比的变化,设备的宽度没变多少,但是高度增加了不少,从原来的大多数16:9变为18:9。

首先映入眼帘的就是启动页的拉伸效果,这个做不好给人的第一印象就不舒服。(我就不截图了太长了)

有三种解决方案:

  1. 利用Android系统本身的自动加载不同分辨drawable的特性创建drawable-xxhdpi-2140x1080资源文件夹
  2. 利用.9的方案
  3. 利用布局+骚操作。怎么骚呢?大家留意一下,绝大部分的启动页最上方和最下方基本都是纯色的没有内容或者只有一边有内容的。我们的布局xml文件可以这样写:Layout嵌套Image,Image全屏居中,如果上下颜色一致给Layout增加相同颜色的背景,如果上下颜色,在Layout上下各加一个View设置对应的颜色,以此达到以假乱真的效果。那么至于有的设计图上下都有内容且不同咋办呢?要么和UI商量修改下互相凑活凑活,要么就用上面的方法。

网络异常,图片无法展示
|

😜刘海和水滴屏

详情可以参考这两篇文章:

www.jianshu.com/p/8ead0701d…

www.jianshu.com/p/62c6625db…

小空没做过这些适配,公司的产品也不需要。针对这个适配小空持开放态度,这东西都是占据在状态栏那,直接空出那不就行了。小空使用了上百款APP从没留意过有没有适配过这个,不在乎,更希望看到的是APP功能,除了公司的UI设计抓这些,大多数用户没人在意。

😜虚拟按键适配

界面效果如风景,按键一出糟心情。

当下大多数手机的虚拟按键还是很不错的,要么是半透明,还有隐藏,像Android默认的那傻帽式的大黑条子很少了。

可以在主题中添加设置项

<itemname="android:navigationBarColor">设置颜色值,比如半透明

这种方式高效的解决了UI设计图转换为布局代码的问题,因为两者已经都是像素单位,程序不再需要进行计算转化为DP单位。解决了设计图和代码之间的鸿沟,大大提升了效率,提高生产力。

😜今日头条适配

这是目前小空一直在项目中使用的方案,不过如果是老项目使用该方案,可能你的布局尺寸都得重干一遍。

Github地址:

github.com/JessYanCodi…

官方拥有良好且完善的文档,小空就不在这瞎搞了。

相比其他,目前的适配方案建议选择SW限定符和AutoSize方案,他们各有各的优点也同样有自己的缺点,开发者根据实际经验自行选择。

😜后续

大多数互联网产品都是手机端,DP其实基本能满足需求,小空在的行业比较另类,各种手机平板定制化设备层出不穷,所以适配需要搞来搞去。但方案是死的人是活的,不要限制住了自己。

适配方案没有最好的,只有最合适的。


作者:芝麻粒儿

链接:https://juejin.cn/post/7001301156760649765

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

👉其他

📢作者:小空和小芝中的小空

📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

相关文章
|
8天前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
68 2
|
8天前
|
Android开发
Android 新建一个lunch项(全志方案)
Android 新建一个lunch项(全志方案)
20 0
|
8天前
|
Android开发
Android RIL 动态切换 4G 模块适配
Android RIL 动态切换 4G 模块适配
20 0
|
8天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
8天前
|
Android开发
Android保存图片到相册(适配android 10以下及以上)
Android保存图片到相册(适配android 10以下及以上)
30 1
|
8天前
|
Android开发
Android Uri转File方法(适配android 10以上版本及android 10以下版本)
Android Uri转File方法(适配android 10以上版本及android 10以下版本)
84 0
|
7月前
|
安全 API 开发工具
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?(下)
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?(下)
432 0
|
8天前
|
Java 物联网 Android开发
Android 12 蓝牙适配 Java版(下)
Android 12 蓝牙适配 Java版(下)
107 0
|
8天前
|
传感器 Java 定位技术
Android 12 蓝牙适配 Java版(上)
Android 12 蓝牙适配 Java版(上)
235 0
|
6月前
|
小程序 开发工具 Android开发
Donut多端框架小程序打包适配ios和安卓app
腾讯新出了一个 Donut 多端框架,可以直接将微信小程序转成 ios 和 安卓 app,小程序开发者工具里也集成了 app 相关升级、调试和打包的功能,终于可以一套代码开发出3个客户端了!
141 0
Donut多端框架小程序打包适配ios和安卓app