[TOC]
采用 Typora
书写,建议各位 clone 下来进行阅读
21级学弟的Android学习清单
按照传统,寒假考核不能使用非官方库,所以以下内容不包含第三方库
难度:kotlin < 框架 < 自定义View
可以买《第一行代码》第三版进行学习,上面附带讲解了
kotlin
的使用注意: kotlin 并不是寒假必须学习的内容,寒假仍能使用 java 来写。在下学期开学会给你们几周的时间来学习(自学,我们不会教),所以可以跳过先学下面的
框架方面比较深奥难懂,建议去GitHub上搜索 wanAndroid 项目阅读一下别人写的源码,不然光看博客的解释不动手操作,是很难理解框架的使用的
虽然后期Android开发都是使用的MVVM,但MVVM是MVP的演化版,MVP还是值得去看一看的
Android官方推荐架构(但目前在向 MVI 演化了),需要与
LiveData
、ViewModel
配合使用
ViewModel
主要与生命周期相关,生命周期这概念需要你们多写代码才能彻底理解,可以不急着去彻底学懂
寒假期间搞清楚怎么用即可,主要是配合MVVM中的网络层进行回调
目前
DataBinding
有一些奇怪的bug,我们一般把他当成了ViewBinding
在用
自定义 View 方面比较难且耗时间,如果你有想实现的一些复杂控件,可以来看看这一块(比如写一个转动的风车)
点击跳转自定义View
滑动冲突是设计自定义View必会的
点击跳转滑动冲突
不是很推荐,光是 Android 的知识你都学不完,当然,卷王除外
东西有些多,其实学长我们好多都没学过😂
除掉
ContenProvder
可不用学习
这是掌邮目前的框架,市面上的大部分应用应该都是类似于这样设计的
以下是对于 Android 之后发展的推测(仅代表个人观点):
Rxjava
与协程
大概率会共存,因为Rxjava
适合处理复杂数据流,协程更适合一般使用
LiveData
有几率会被Flow
代替,但LiveData
更简便,适用于大部分需求
XML View
与Compose
以后应该会共存(个人认为各有各的优势)还有现在谷歌开始推荐
MVI
架构了(靠,谷歌真的是要累死我们开发者)
学长们不讲或讲不细的自学内容
推荐学习软件:稀土掘金
推荐大佬文章:https://github.com/leavesC/AndroidGuide
这里面很多便捷的控件及用法,比如:
TabLayout
直接添加小圆点、共享元素动画等推荐直接看官网:https://material.io/
推荐去打包他的源码:源码
(虽然源码没写注释,但想实现某个功能时可以去看看是否已经有实现了的)
线程池作业:https://github.com/985892345/Android_Learning_Route/blob/main/线程池作业.md
使用LinedList实现阻塞队列
RecyclerView进阶作业:https://github.com/985892345/Android_Learning_Route/blob/main/RecyclerView进阶作业.md
这是两个形参的刷新,后面有一个单独的参数
paylosd: Any?
该方法与
onBindViewHolder(holder, position, payloads)
三个参数的回调有关系补充内容
刷新时图片 rv 的图片会闪动
该问题与 rv 的缓存有关,因为在刷新时这个
ViewHolder
与缓存中进行了互换,相当于重新加载了图片解决办法:调用带有
paylosd
参数的刷新,取消与缓存的互换DiffUtil 中也有一个可重写的方法,其中带有
paylosd
参数注: 网上部分博客的差分比较有些问题,尽量自己搞懂原理(不是算法原理,而是究竟该比较什么数据才会是真正的差分,尤其是
areItemsTheSame
方法)
自定义View预习作业:https://github.com/985892345/Android_Learning_Route/blob/main/自定义View预习作业.md
自定义View课件:https://github.com/985892345/CustomViewWithAnimStudy
推荐:
入门:《Android自定义控件开发入门与实战》
进阶:《Android自定义控件高阶进阶与精彩实例》
博客:自定义View源码原理
- 流式布局
推荐:
博客:
图解事件分发
dispatchTouchEvent源码解析图片:郭祥瑞的滑动分发分支图
推荐:
博客:图解嵌套滑动
题外话:为什么还要看1,不直接看2?因为部分官方控件中只使用了1,所以你要知道1和2的区别。还有一个3,这个3在网上的教程较少,直接继承了2,新增了在嵌套滑动中只消耗部分值的方法。 NestedScrollingParent3官方文档
建议自己写一些复杂自定义View,包含单击、滑动等一系列事件
可参考郭祥瑞写的 TimeSelectView 控件(按照 README导入简单使用一下,源码写的很拉,在重写了😫,这里直接给出软件下载地址,下载后自己试着想想该怎么设计: https://wwi.lanzouo.com/iC1JGy08a0h
- 下拉刷新(可参考
SmartRefreshLayout
,也可以把上拉加载一起实现)
学习它需要知道嵌套滑动
1、实现三级缓存
2、搞懂它为什么能根据 View 的生命周期而自动取消加载图片(他可没有使用
Lifecycle
这个东西)3、改用
Lifecycle
实现
尝试实现拦截器
仿写Gson
就算你没时间仿写它,也必须把它用熟,因为它的思想很重要
但不建议使用,此框架因过于灵活,会像goto一样造成滥用而难以溯源
有很多自定义View难实现时用这个来写很简单
推荐谷歌官网:https://developer.android.google.cn/training/constraint-layout/motionlayout/examples?hl=zh_cn
学习成本过高或目前阶段不够或目前不使用
有几个简单的还是自己要提前了解下
推荐文章:https://openxu.blog.csdn.net/article/details/116016798
推荐21级红岩学长蔷神的心得体会:https://github.com/False-Mask/KotlinCoroutine
目前还有些坑,官方还在改进中,掌邮中也不使用
不是2和1