【Android -- 开发】中级工程师进阶

一、前言

初级工程师只要又快又好的完成任务就可以,中级工程师阶段不仅要又快又好,还要能独当一面。独当一面是要能独立负责一个项目,或者一个独立业务。并在遇到问题时可以独立解决,成为最熟悉自己负责业务的那个人。

中级工程师开始要注重代码规范,学习更底层的知识,一般还要指导初级工程师。同时要懂得更多职场规则,并做好长远的职业规划。

二、明确定位

现在你是中级工程师,但是你想当个高级工程师,所以,你就要给自己定个目标,即:我是要成为高级工程师的男人。有了这个定位,并且努力朝着这个目标去努力,然后内心深处就会有一个感觉,这个感觉就会成为你的 B 格,也就是说,虽然我现在是小菜,但是我不是一般的小菜,从而内心有一种自豪感,而这种自豪感会给你提供正能量。这一条是虚的,但是是有用的。

三、技术要求

1. 自定义 View
自定义 View 的三种方式:

  • 组合基础控件

  • 继承基础控件,做相应的更改

  • 继承 View 或 ViewGroup

这种方式也是我们用的比较多的一种方式,这种方式比较自由,定制度高,需要实现下面几个方法

  • onMeasure()
  • onLayout()
  • onDraw()

执行顺序为:onMeasure()->onLayout() -> onDraw()。

扫描二维码关注公众号,回复: 14335985 查看本文章
  • View 事件分发机制:
    自定义 View 的时候,我们需要响应用户的各种事件,这个时候我们就需要了解View的事件分发机制了。

更加详细 & 具体请看专栏:Android – 自定义 View

2. App 的几种架构

  • MVC
  • MVP
  • MVVM
  • Jetpack

更加详细 & 具体请看专栏:Android – 架构

3. 线程 & 进程

  • Thread
  • Runnable
  • Handler
  • AsycTask
  • IntentService
  • HandlerThread
  • 线程池

更加详细 & 具体请看专栏:Android – 线程 & 进程

4. Android 动画
(1)Android 中的 5 种基础动画:

  • 平移动画
  • 缩放动画
  • 旋转动画
  • Alpha 动画
  • 帧动画

(2) 属性动画

补间动画很简单,但是它的场景使用很有限,它只能对一个 View 做动画。有的时候,我们需要更为精准的控制,我们要控制一个属性来做动画,这个时候属性动画就派上用场了。属性动画的几个相关类:

  • ObjectAnimator
  • ValueAnimator
  • AnimatorSet

属性动画用得就比较广泛了,属性动画 + 自定义View 配置 Path和贝塞尔曲线 能做出很多复杂的漂亮的效果。

(3)矢量动画

  • svg

  • VectorDrawable

  • AnimatedVectorDrawable

矢量动画大家可能比较陌生,Android Studio 支持将一个 Svg 文件导入生成一个path 路径,用 VectorDrawableAnimatedVectorDrawable 来实现矢量动画。但是需要在 Android5.0 以上。

更加详细 & 具体请看专栏:Android – 动画

5 . Material Design 系列

Android 5.0 开始,Google 推出了 Material Design 设计规范,Android support 包中也加入了符合 Material Design 设计规范的各种控件:

  • Toolbar 的使用

  • AppbarLayout+CollapsingToolbarLayout

  • Behavior 相关:

    • BottomSheetBehavior
    • BottomSheetDialog
    • SwipeDismissBehavior
    • 自定义Behavior
  • TextInputLayout + TextInputEditText

  • TabLayout

  • BottomNavigationView

  • CardView 阴影卡片

  • Snackbar , FloatActionButton

利用这些控件,可以做出很多符合 Material Design 设计规范的效果和动画。

更加详细 & 具体请看专栏:Android – Material Design

6 . Android 多媒体

多媒体相关也是 Android 开发中比较重要并且较难的一块了,它设计到相机、视频、音频相关的开发。

6.1 相机开发

  • 使用自带的相机APP 拍照
  • 系统相册选择照片
  • 系统相机或相册获取的照片裁剪
  • 使用相机API 开发相机:

(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 绝对是我们程序员的宝贵财富,上面有各种各样的开源库,只有你想不到的,没有你找不到的。各大公司也有各种各样的开源的解决方案。

以下是比较流行的一些框架:

图片加载框架:

  • Universal-Imageloader
  • Picasso
  • Glide
  • Frecssco

网络相关框架:

  • Retrofit

  • Okhttp

  • Volley

RxJava :

  • RxJava

  • RxAndroid

数据库方面:

  • GreenDao

  • OrmLite

  • Realm

上面都是当前流行的一些框架。尤其是 RxJava , 当你看到 Github 上各种各样的 RXxxx 时,你就明白RxJava 有多火。(加个Rx感觉逼格都高了一档)。

更加详细 & 具体请看专栏:Android – 开源库
更加详细 & 具体请看专栏:Android – RxJava

9. Kotlin

  • Kotlin 中文网站

  • 数据容器(数组)

  • 数据容器(集合)

  • 构建第一个 Android App

  • 函数

  • Lambda 表达式

  • 条件控制

  • 循环控制

更加详细 & 具体请看专栏:Android – Kotlin

四、学会造轮子

当我们有了一定的积累之后,试着去造轮子吧。可以是一个简单的 View、炫酷的动画效果、一个常用的组件抽取。把这些常用的功能封装成一个库。当以后实现相似的功能的时候,我们就可以避免重复搬砖了。

如果条件允许,我们还可以将它开源到 Github ,有利于他人学习和使用,开源是一件利人利己的事。对于他人而言:可以借鉴思路、或者在项目中直接使用。对于自己而言:使用者发现bug反馈给我们,修复 bug、升级版本,本生也是一个提升自己的机会。同时还能相互之间交流,吸取经验。

如果你还没有开始写一个开源库,那么现在就尝试着写一个吧 。

五、收集自己的工具类库

你现在就可以看看你所做的项目,里面是不是有一个 utils 包 ?不用看了,肯定有,里面有你使用的各种各样的工具类。

也许你会跟我有同样的感觉,一些常用的操作如,读写文件、Bitmap 转换、日期格式化等等。当我们使用的时候,我们很难一下子就将它写出来,我们可能会记得以前有个项目使用过,然后去翻以前的项目,有的可能去 google 下,拷贝一段代码。

这些都是比较常用的功能,并且代码相对固定,我们可以将我们平时使用的工具类收集到一个单独的类库中。然后将其分好类:

  • 文件操作相关 FileUtils

  • Bitmap 操作相关 BitmapUtils

  • 日期格式化相关 DateUtils

上面只是举了三个例子,所有的工具类都可以收集。

当你工作 3 年或者 5 年之后,你再来看一看这个库,或许就会不一样了。

六、学会思考和总结

当我们学习一个功能或者解决一个问题的时候,我们可以把整个过程梳理总结一下,如果我们学习了或者解决问题之后不做思考和总结,那么过一段时间或许就全部忘了。好记性不如烂笔头,梳理一下,记一个笔记或者写一篇博文。这样做有很多好处:

  1. 有利于加深我们的记忆。
  2. 脉络梳理清楚了,有助于我们更深刻的理解。
  3. 就算以后忘记了,再来翻一下自己的笔记或者博客,再看一遍,就又想起来了。
  4. 还可以帮助其他人,避免遇到相同的问题。

当我们做完一个项目的时候,留给自己一些时间做一些梳理和总结吧,如果你还没有这样的习惯,那么就从现在开始吧!总之,形成自己的知识体系很重要。

猜你喜欢

转载自blog.csdn.net/duoduo_11011/article/details/125498791