[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