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


    一、前言

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

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

    二、明确定位

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

    三、技术要求

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

    • 组合基础控件

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

    • 继承 View 或 ViewGroup

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

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

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

    • 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. 还可以帮助其他人,避免遇到相同的问题。

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

  • 相关阅读:
    处理element ui 表格中 按钮 loading问题
    秋招面试!2022冲刺必看这1000道Java岗最新面试核心题,冲刺金九银十!!
    项目管理之常见七大问题挑战
    在银行外包如何自我提升
    【Es基础入门必看】
    基于Vue3实现一个前端埋点上报插件并打包发布到npm
    Fake Maxpooling 二维滑动窗口
    Java拷贝之深拷贝与浅拷贝
    Docker部署es+kibana
    【Python脚本进阶】1.1、基础环境
  • 原文地址:https://blog.csdn.net/duoduo_11011/article/details/125498791