所有复杂的界面都由这些简单的基础控件组成,因此,你需要好好了解一下他们的各种属性。
###三、Android 进阶
上面列举了一些Android的基础知识点,仅仅熟悉这些还不够,还需要学习Android开发中更高级一点的东西:
1 . View
上面列举了一些基础的View和控件,但是这些基础控件有时候不能满足我们的需求,这时候就需要自定义View了。
自定义View:
自定义view 的三种方式:
1,组合基础控件
2,继承基础控件,做相应的更改。
3,继承View 或 ViewGroup:
这种方式也是我们用的比较多的一种方式,这种方式比较自由,定制度高,需要实现下面几个方法
(1) onMeasure()
(2) onLayout()
(3) onDraw()
执行顺序为:onMeasure()
->onLayout()
-> onDraw()
。
View事件分发机制:
自定义view 的时候,我们需要响应用户的各种事件,这个时候我们就需要了解View的事件分发机制了。
关于事件分发机制,看一张比较经典的图(U型图):
当这几个方法都调用super 的时候,整个事件会走完这个U型图。
事件分发机制这一块还是比较难理解的,更多详解请查资料。
App 的几种架构
常见的三种架构,根据自己的业务需要选择,每种架构都有自己的有点和缺点,另外,我觉得一个APP 中,多种架构是可以并存的,比如:MVC和 MVP 。一个非常简单的展示界面,不必为它弄一个 P 层,反而变得复杂了。
3 . Android 动画
(1) Android 中的5种基础动画
(2) 属性动画
补间动画很简单,但是它的场景使用很有限,它只能对一个View做动画。有的时候,我们需要更为精准的控制,我们要控制一个属性来做动画,这个时候属性动画就派上用场了。属性动画的几个相关类:
属性动画用得就比较广泛了,属性动画 + 自定义View 配置 Path和贝塞尔曲线 能做出很多复杂的漂亮的效果。
(3)矢量动画
矢量动画大家可能比较陌生,Android Studio 支持将一个Svg 文件导入生成一个path 路径,用VectorDrawable 和AnimatedVectorDrawable 来实现矢量动画。但是需要在Android5.0 以上。
4 . Material Design 系列
Android 5.0 开始,Google 推出了 Material Design 设计规范,Android support 包中也加入了符合Material Design 设计规范的各种控件:
1,Toolbar 的使用
2,AppbarLayout+CollapsingToolbarLayout
3, Behavior 相关:
(1),BottomSheetBehavior
(2), BottomSheetDialog
(3),SwipeDismissBehavior
(4), 自定义Behavior
4, TextInputLayout + TextInputEditText
5, TabLayout
6, BottomNavigationView
7 , CardView 阴影卡片
8 ,Snackbar , FloatActionButton
利用这些控件,可以做出很多符合material Design 设计规范的效果和动画。
5 . Android 多媒体
多媒体相关也是Android 开发中比较重要并且较难的一块了,它设计到相机、视频、音频相关的开发。
相机开发:
1, 使用自带的相机APP 拍照
2,系统相册选择照片
3,系统相机或相册获取的照片裁剪
4,使用相机API 开发相机:
(1), Android 5.0 (API 21 )以下 使用Camera API
(2) , Android 5.0 以上使用 Camera2 API
5 ,自定义相册开发
6 , 自定义裁剪界面
Android视频开发:
(1)视频播放
MediaPlayer
VideoView
(2)视频编解码
音频开发:
AudioPlayer
音乐播放器
音视频开发这一块门槛较高,但是这也是比较吃香的一个领域,把这一块吃透了,你的优势就很大了,现在的直播这么火,对于这一块的需求还是比较大的。
6 . Git
Git 版本控制 也是我们常用的,熟悉各种Git 命令。对于代码的提交、代码拉取,历史版本的查看等Android Studio 已经集成好了,但是还是推荐大家日常用命令行方式操作,这样有助于我们熟悉各种Git 命令。
7. Android 权限适配
Android 6.0 以上权限适配。
8 . Gradle
以上就是Android 相关的一些知识点。
Github 绝对是我们程序员的宝贵财富,上面有各种各样的开源库,只有你想不到的,没有你找不到的。各大公司也有各种各样的开源的解决方案。
以下是比较流行的一些框架:
图片加载框架:
网络相关框架:
RxJava :
数据库方面:
上面都是当前流行的一些框架。尤其是RxJava , 当你看到Github 上各种各样的 RXxxx 时,你就明白RxJava 有多火。(加个Rx感觉逼格都高了一档)。
如果你觉得Java 基础、Android 基础这些东西都学得差不多了,整明白了。那么应该学习这些框架了,我们该怎么学习呢?不仅仅是学习怎么使用,我们可以去学习源码,学习他们的整个框架的设计思路、代码规范。对于部分功能可以仿照着写一个相同的。比如:缓存,图片加载框架都是多级缓存的,我们可以看一下每个框架的缓存实现有何不同,各有什么优缺点,最后仿写一个,把它变成我们自己的。
当我们有了一定的积累之后,试着去造轮子吧。可以是一个简单的View、炫酷的动画效果、一个常用的组件抽取。把这些常用的功能封装成一个库。当以后实现相似的功能的时候,我们就可以避免重复搬砖了。
如果条件允许,我们还可以将它开源到Github,有利于他人学习和使用,开源是一件利人利己的事。对于他人而言:可以借鉴思路、或者在项目中直接使用。对于自己而言:使用者发现bug反馈给我们,修复bug、升级版本,本生也是一个提升自己的机会。同时还能相互之间交流,吸取经验。
如果你还没有开始写一个开源库,那么现在就尝试着写一个吧。
你现在就可以看看你所做的项目,里面是不是有一个 utils
包 ?不用看了,肯定有,里面有你使用的各种各样的工具类。
也许你会跟我有同样的感觉,一些常用的操作如,读写文件、Bitmap转换、日期格式化等等。当我们使用的时候,我们很难一下子就将它写出来,我们可能会记得以前有个项目使用过,然后去翻以前的项目,有的可能去 google 下,拷贝一段代码。
这些都是比较常用的功能,并且代码相对固定,我们可以将我们平时使用的工具类收集到一个单独的类库中。然后将其分好类:
FileUtils
BitmapUtils
DateUtils
上面只是举了三个例子,所有的工具类都可以收集。
当你工作3年或者5年之后,你再来看一看这个库,或许就会不一样了。
在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021大厂最新Android面试真题解析
各个模块学习视频:如数据结构与算法
**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](
)**
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!
本文已被腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录,自学资源及系列文章持续更新中…
进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!
本文已被腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录,自学资源及系列文章持续更新中…