初级工程师只要又快又好的完成任务就可以,中级工程师阶段不仅要又快又好,还要能独当一面。独当一面是要能独立负责一个项目,或者一个独立业务。并在遇到问题时可以独立解决,成为最熟悉自己负责业务的那个人。
中级工程师开始要注重代码规范,学习更底层的知识,一般还要指导初级工程师。同时要懂得更多职场规则,并做好长远的职业规划。
现在你是中级工程师,但是你想当个高级工程师,所以,你就要给自己定个目标,即:我是要成为高级工程师的男人。有了这个定位,并且努力朝着这个目标去努力,然后内心深处就会有一个感觉,这个感觉就会成为你的 B 格,也就是说,虽然我现在是小菜,但是我不是一般的小菜,从而内心有一种自豪感,而这种自豪感会给你提供正能量。这一条是虚的,但是是有用的。
1. 自定义 View
自定义 View 的三种方式:
组合基础控件
继承基础控件,做相应的更改
继承 View 或 ViewGroup
这种方式也是我们用的比较多的一种方式,这种方式比较自由,定制度高,需要实现下面几个方法
执行顺序为:onMeasure()->onLayout() -> onDraw()。
更加详细 & 具体请看专栏:Android – 自定义 View
2. App 的几种架构
更加详细 & 具体请看专栏:Android – 架构
3. 线程 & 进程
更加详细 & 具体请看专栏:Android – 线程 & 进程
4. Android 动画
(1)Android 中的 5 种基础动画:
(2) 属性动画
补间动画很简单,但是它的场景使用很有限,它只能对一个 View 做动画。有的时候,我们需要更为精准的控制,我们要控制一个属性来做动画,这个时候属性动画就派上用场了。属性动画的几个相关类:
属性动画用得就比较广泛了,属性动画 + 自定义View 配置 Path和贝塞尔曲线 能做出很多复杂的漂亮的效果。
(3)矢量动画
svg
VectorDrawable
AnimatedVectorDrawable
矢量动画大家可能比较陌生,Android Studio 支持将一个 Svg 文件导入生成一个path 路径,用 VectorDrawable 和AnimatedVectorDrawable 来实现矢量动画。但是需要在 Android5.0 以上。
更加详细 & 具体请看专栏:Android – 动画
5 . Material Design 系列
Android 5.0 开始,Google 推出了 Material Design 设计规范,Android support 包中也加入了符合 Material Design 设计规范的各种控件:
Toolbar 的使用
AppbarLayout+CollapsingToolbarLayout
Behavior 相关:
TextInputLayout + TextInputEditText
TabLayout
BottomNavigationView
CardView 阴影卡片
Snackbar , FloatActionButton
利用这些控件,可以做出很多符合 Material Design 设计规范的效果和动画。
更加详细 & 具体请看专栏:Android – Material Design
6 . Android 多媒体
多媒体相关也是 Android 开发中比较重要并且较难的一块了,它设计到相机、视频、音频相关的开发。
6.1 相机开发
(1) Android 5.0 (API 21 )以下 使用Camera API
(2) Android 5.0 以上使用 Camera2 API
自定义相册开发
自定义裁剪界面
6.2 Android 视频开发
视频播放
MediaPlayer
VideoView
视频编解码
6.3 Android 音频开发
AudioPlayer
音乐播放器
更加详细 & 具体请看专栏:Android – 多媒体
7. 性能优化
更加详细 & 具体请看专栏:Android – 性能优化
8. 学习了解开源库
Github 绝对是我们程序员的宝贵财富,上面有各种各样的开源库,只有你想不到的,没有你找不到的。各大公司也有各种各样的开源的解决方案。
以下是比较流行的一些框架:
图片加载框架:
网络相关框架:
Retrofit
Okhttp
Volley
RxJava :
RxJava
RxAndroid
数据库方面:
GreenDao
OrmLite
Realm
上面都是当前流行的一些框架。尤其是 RxJava , 当你看到 Github 上各种各样的 RXxxx 时,你就明白RxJava 有多火。(加个Rx感觉逼格都高了一档)。
更加详细 & 具体请看专栏:Android – 开源库
更加详细 & 具体请看专栏:Android – RxJava
9. Kotlin
数据容器(数组)
数据容器(集合)
构建第一个 Android App
函数
Lambda 表达式
条件控制
循环控制
更加详细 & 具体请看专栏:Android – Kotlin
当我们有了一定的积累之后,试着去造轮子吧。可以是一个简单的 View、炫酷的动画效果、一个常用的组件抽取。把这些常用的功能封装成一个库。当以后实现相似的功能的时候,我们就可以避免重复搬砖了。
如果条件允许,我们还可以将它开源到 Github ,有利于他人学习和使用,开源是一件利人利己的事。对于他人而言:可以借鉴思路、或者在项目中直接使用。对于自己而言:使用者发现bug反馈给我们,修复 bug、升级版本,本生也是一个提升自己的机会。同时还能相互之间交流,吸取经验。
如果你还没有开始写一个开源库,那么现在就尝试着写一个吧 。
你现在就可以看看你所做的项目,里面是不是有一个 utils 包 ?不用看了,肯定有,里面有你使用的各种各样的工具类。
也许你会跟我有同样的感觉,一些常用的操作如,读写文件、Bitmap 转换、日期格式化等等。当我们使用的时候,我们很难一下子就将它写出来,我们可能会记得以前有个项目使用过,然后去翻以前的项目,有的可能去 google 下,拷贝一段代码。
这些都是比较常用的功能,并且代码相对固定,我们可以将我们平时使用的工具类收集到一个单独的类库中。然后将其分好类:
文件操作相关 FileUtils
Bitmap 操作相关 BitmapUtils
日期格式化相关 DateUtils
上面只是举了三个例子,所有的工具类都可以收集。
当你工作 3 年或者 5 年之后,你再来看一看这个库,或许就会不一样了。
当我们学习一个功能或者解决一个问题的时候,我们可以把整个过程梳理总结一下,如果我们学习了或者解决问题之后不做思考和总结,那么过一段时间或许就全部忘了。好记性不如烂笔头,梳理一下,记一个笔记或者写一篇博文。这样做有很多好处:
当我们做完一个项目的时候,留给自己一些时间做一些梳理和总结吧,如果你还没有这样的习惯,那么就从现在开始吧!总之,形成自己的知识体系很重要。