Android屏幕适配;知识点+攻略+面试要点社招面试心得

本文详细探讨了Android开发中的屏幕适配问题,包括编译构建优化、视图处理、动画实现等方面,并分享了Android Studio 4.0的新特性,如Build Speed窗口、Kotlin Gradle DSL支持、coreLibraryDesugaringEnabled指令等,以提高开发效率。此外,还介绍了预览功能的改进,如自定义View预览、嵌入式模拟器和3D布局检查,助力Android工程师提升技能并突破职业瓶颈。
摘要由CSDN通过智能技术生成

前言

作为一个3-5年的Android工程师,我们经常会遇到这些瓶颈:

1.技术视野窄
长期在小型软件公司,外包公司工作,技术视野被限制的太厉害

2.薪资提升难
初中级Android岗位薪资上升空间有限,基本上你想拿15k以上,不会点源码层的东西是根本拿不到的

3.学习资源少
入门之后想要提升很难,靠自己接触的简单业务项目,去反复操练那些cv技术。博客和书本上的技术大多比较抽象并且零散,可以借鉴和指导,但是没办法复制成自己的

有了这份阿里P7大神整理的Android开发核心知识笔记,所有的瓶颈通通都能快速打破。

整个笔记都是根据高级工程师知识体系来整理的,相对于网上很多碎片化的内容,这份知识笔记是完全按照Android开发知识体系编排,更加系统,由浅入深,由简到繁,学习起来也不会很吃力。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tr6uk6Zz-1623418853894)(//upload-images.jianshu.io/upload_images/13841068-e9c4b81a9e922735.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

新的 Android Studio 4.0 更换了全新的启动界面,最近 Google I/O 中官方发布了 Android Studio 3.5 的 beta 版,一个月之后发布了 Android Studio 3.6 beta 版,而最近的 Android Dev Summit 中为我们带来了 Android Studio 4.0 预览版,今天我们就来看一下,新的 Android Studio 4.0 为开发者带来了哪些新体验!

接下来我会依据 Android Dev Summit 分享的内容以及自己的理解,为大家介绍 Android Studio 4.0 的最新进展,没关注的小伙伴记得关注鸭!如果觉得这些文章有点意思,记得分享转发评论点赞鸭!

编译构建方面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rrJDbdhE-1623418853896)(//upload-images.jianshu.io/upload_images/13841068-df23a7fe49b81407?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

新的 Build 窗口,在每一次 Build 之后,会出现一个新的 Build Speed 窗口,我们可以在这个窗口里面查看在整个 Build 期间不同插件、不同任务的耗时,可以做针对性修复。同时还会提示我们哪些插件是每一次 Build 的时候永远都在执行的,帮助我们发现问题,减少不必要的插件执行,缩短 Build 时间。这里面有很多分类,有兴趣的同学可以逐个去研究。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svHAPvQB-1623418853898)(//upload-images.jianshu.io/upload_images/13841068-8c940c41f0f0f279?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

现在 Android Studio 4.0 完善了 Kotlin Gradle DSL 的代码提示、在 IDE 中可以直接查看 DSL 的文档。我们都知道之前默认的 Groovy 写法中,Android Studio 会自动帮助我们检查现有依赖库是否有新版本更新,现在针对 Kotlin Gradle DSL 也保留支持了这一特性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6prUTYHk-1623418853901)(//upload-images.jianshu.io/upload_images/13841068-276e20ae5ca1ae98?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

在编译方面,增加了新的 coreLibraryDesugaringEnabled true 指令,开启这个指令,我们可以使用 Java 8 中的某些高级 API。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZEQCnEkg-1623418853903)(//upload-images.jianshu.io/upload_images/13841068-8423f1963a91c917?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

例如上图所示的,list.stream() 方法,默认情况下,它只能在 API 24 以上使用,通过开启 coreLibraryDesugaringEnabled 能够消除版本的限制,在低于 API 24 的设备上也可以使用此方法。目前此指令支持 java.util.stream、java.time、java.util.function、ConcurrentHashMap 等。此功能的目的在于解决旧版本上由于无法使用 Java 高级 API 而产生的持续性 bug 无法得到修复的问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vkgGhBp2-1623418853904)(//upload-images.jianshu.io/upload_images/13841068-c66cff7062d92cc0?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

新的 Android Studio 4.0 在编辑 ProGuard 文件时,提供的语法高亮、代码提示和错误检查,同时和 Refactor Name 的时候,ProGuard 文件中对应的字段也会及时更新。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GRSU7BsE-1623418853905)(//upload-images.jianshu.io/upload_images/13841068-948fe7c50d545259?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

新增了 viewBinding 指令,当我们开启设置为 true 的时候,编译器会为我们生成一个视图绑定类,即下图中的 ActivityMainBinding。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x3B9Dz6o-1623418853906)(//upload-images.jianshu.io/upload_images/13841068-de66d52b510586d3?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

viewBinding 的目的在于确保我们在代码中所使用的 View 是试图中确切存在的。防止使用findViewById 为空引起崩溃。(不过我在 4.0 canary 1 上面没有开启成功,应该是还有 bug )

视图方面

目前我们编写 UI 有三种方式,xml、代码编写自定义 View、Jetpack Compose。目前这三种方式全部在 Android Studio 4.0 上支持预览。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y61JSX8R-1623418853907)(//upload-images.jianshu.io/upload_images/13841068-a25e8a5161592a89?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

三者的预览界面都是一样的,分三种模式:编辑、预览、编辑+预览。别的不说自定义 View 支持预览那真是太方便了,能极大的提升开发效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVEgxHoh-1623418853908)(//upload-images.jianshu.io/upload_images/13841068-4f39bc1f0df3d9fd?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

而且,xml 的视图预览中支持多种不同分辨率设备的同时预览,还可以预览国际化时不同语言的排版情况,以及色盲模式的支持。(当然后面两项在 4.0 canary 1 中还没出现,只是在官方演示视频中做了讲解)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXPJXoi4-1623418853909)(//upload-images.jianshu.io/upload_images/13841068-7e4aff4e0a57405b?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

还有一项很牛逼的东西,就是 Android Studio 4.0 支持嵌入式模拟器,注意上图中的图像界面,不是我们第一个说的预览界面,是真正的模拟器,左边开发右边调试,再也不用切屏幕了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZqfTYAa1-1623418853910)(//upload-images.jianshu.io/upload_images/13841068-b01b42b3a6d0ecc3?imageMogr2/auto-orient/strip|imageView2/2/w/640/format/webp)]

Layout Inspector 也得到了更新,之前的 Layout Inspector 类似于布局快照,切换界面后,需要重新启动 Layout Inspector 。Android Studio 4.0 中 Layout Inspector 支持实时自动更新,当我们的设备切换页面后,布局分析器中的页面也会更新,同时关于资源文件的显示也更加完备,增加了完整调用链的信息展示。还有一个特牛逼的功能(划重点了!)就是 Layout Inspector 支持 3D 模型检查,就像下图这样:

![

虽然官方视频中说到这些都会在 Android Studio 4.0 中出现,不过以我目前能下载到的 canary 1 版本来说,自定义 View 预览、嵌入式模拟器、新的 Layout Inspector 都没有找到,后续的 canary 应该会逐步支持。

动画方面

使用 MotionLayout 我们需要在 xml 中自定义 MotionScene,在 MotionScene 中指定不同 Layout 之间的变化。

查看到官方的 Demo 之后,说实话这种动画编写方式还是有些繁琐的,还好这次 Android Studio 4.0 支持了新的动画编辑器,让我们可以通过可视化的操作,来创建 MotionLayout 动画。

我们可以指定 Layout 在 start 和 end 两个状态下的布局,设置动画持续时间,点击上方的 Transition 线,就可以预览动画,是不是非常简单!而且我们可以在持续时间中,任意添加关键帧,设置每一帧的状态,更细小颗粒度的控制动画效果,关键帧可以设置属性、相对位置。有了 MotionLayout 和全新的动画编辑器,在 Android 上做动画限制你的不再是 API 而是你的想象力。

其他

全新的 Resource Manager 支持多种资源的查看和管理,例如图片、颜色、布局、字符串、动画等等。

内置的 Materiel Design Icon 提供了多种样式的选择:填充、线性、双色、圆角、矩形,终于不用自己切图了。

IDE 内置了很多简写代码指令模版,帮助我们快速使用,同时支持自定义插入,看了这次分享,才发现自己对 Android Studio 的使用还停留在会用的阶段,从来没有深入研究过,例如我最近才发现可以使用 File → New → Import Sample 查看官方提供了最佳实践代码,有 AAC 架构、有动画、有 CameraX、有 NDK 各种分类应有尽有,评论告诉我,我应该不说最后一个知道这个功能的吧。

以上就是在本次 Android Dev Summit 中 Android Studio 最新进展的部分内容,当然在这些功能的背后,IDE 本身的内存占用、编译速度、都有很大的提升,不然也不会直接版本号跳跃到 4.0,想想隔壁苹果 Xcode 都出道 11 了,Android Studio 才到 4.0 真是慢工出细活啊。

最后

感谢大家能耐着性子,看完我啰哩啰嗦的文章。

愿与各位坚守在Android开发岗位的同胞们互相交流学习,共同进步!

在这里我也分享一份自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

如果你有需要的话,可以点赞+评论关注我

  • Android进阶学习全套手册
    关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。目前,我手头上整理到的电子书还算比较全面,HTTP、自定义view、c++、MVP、Android源码设计模式、Android开发艺术探索、Java并发编程的艺术、Android基于Glide的二次封装、Android内存优化——常见内存泄露及优化方案、.Java编程思想 (第4版)等高级技术都囊括其中。


点击【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!

《设计思想解读开源框架》

第一章、 热修复设计

  • 第一节、 AOT/JIT & dexopt 与 dex2oat

  • 第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题

  • 第三节、热修复设计之热修复原理

  • 第四节、Tinker 的集成与使用(自动补丁包生成)

    第二章、 插件化框架设计

  • 第一节、 Class 文件与 Dex 文件的结构解读

  • 第二节、 Android 资源加载机制详解

  • 第三节、 四大组件调用原理

  • 第四节、 so 文件加载机制

  • 第五节、 Android 系统服务实现原理

    第三章、 组件化框架设计

  • 第一节、阿里巴巴开源路由框——ARouter 原理分析

  • 第二节、APT 编译时期自动生成代码&动态类加载

  • 第三节、 Java SPI 机制

  • 第四节、 AOP&IOC

  • 第五节、 手写组件化架构

    第四章、图片加载框架

  • 第一节、图片加载框架选型

  • 第二节、Glide 原理分析

  • 第三节、手写图片加载框架实战

    第五章、网络访问框架设计

  • 第一节、网络通信必备基础

  • 第二节、OkHttp 源码解读

  • 第三节、Retrofit 源码解析

    第六章、 RXJava 响应式编程框架设计

  • 第一节、链式调用

  • 第二节、 扩展的观察者模式

  • 第三节、事件变换设计

  • 第四节、Scheduler 线程控制

    第七章、 IOC 架构设计

  • 第一节、 依赖注入与控制反转

  • 第二节、ButterKnife 原理上篇、中篇、下篇

  • 第三节、Dagger 架构设计核心解密

    第八章、 Android 架构组件 Jetpack

  • 第一节、 LiveData 原理

  • 第二节、 Navigation 如何解决 tabLayout 问题

  • 第三节、 ViewModel 如何感知 View 生命周期及内核原理

  • 第四节、 Room 架构方式方法

  • 第五节、 dataBinding 为什么能够支持 MVVM

  • 第六节、 WorkManager 内核揭秘

  • 第七节、 Lifecycles 生命周期


    本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

如果需要八份神级学习进阶资料,赶紧戳这里免费领取!
cles 生命周期**

[外链图片转存中…(img-Z3YWWJcM-1623418853924)]
本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
[外链图片转存中…(img-EVNsmF2y-1623418853925)]

如果需要八份神级学习进阶资料,赶紧戳这里免费领取!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值