Android修行手册-几个适配方案

举报
芝麻粒儿 发表于 2021/11/21 10:32:39 2021/11/21
【摘要】 👉关于作者众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)👉即将学会了解到市面上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商量修改下互相凑活凑活,要么就用上面的方法。

😜刘海和水滴屏

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

https://www.jianshu.com/p/8ead0701d8ef

https://www.jianshu.com/p/62c6625db7ab

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

😜虚拟按键适配

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

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

可以在主题中添加设置项

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

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

😜今日头条适配

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

Github地址:

https://github.com/JessYanCoding/AndroidAutoSize

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

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

😜后续

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

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

👉其他

📢作者:小空和小芝中的小空
📢转载说明:务必注明来源:https://zhima.blog.csdn.net/ https://juejin.cn/user/426576084
📢欢迎点赞👍收藏🌟留言📝

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200