Android方向的话,细分的领域
1、Android高级UI
如果想在这方向进行进阶的话,一个高级UI需要达到什么水平呢,就是UI给你任何一个效果,你都能用代码把他高质量的实现出来,在性能优化方面也需要下点功夫,做出来的效果又流畅又不费电才是一个Android高级UI改干的事,需要具备的储备知识有哪些呢?
1、需要熟悉WebView交互,熟悉WebView的使用和原理,js与Android代码交互,多进程的WebView实践,熟悉WebView与Native的通信框架和原理
2、MeterialDesignApp的设计,NestScrollView的原理,自定义自己的Tablayout
3、ViewGroup,View的绘制原理,绘制流程,MeasureSpec和LayoutParams的使用和原理
4、UI基础的掌握,Android的坐标系和角度和颜色等
5、自定义View事件分发机制,多点触控,滑动冲突,手势
6、Canvas画布图层,画几何图形,Path贝塞尔曲线,文字的绘制
7、属性动画,视图动画
8、ViewPager,RecycleView还有各种布局的原理
9、性能优化,布局检测与优化,内存优化,耗电优化,屏幕适配,OOM的产生及解决办法,ANR的解决
2、AndroidNDK方向
NDK:(NativeDevelopmentKit),原生开发工具包是一组可以让您在Android应用中利用C和c++代码的工具,可用以从您自己的源代码构建,或者利用现有的预构建库.
使用场景:
NDK本身对许多类型的Android应用没什么价值,因为它不可避免的增加开发过程复杂性,所以通常不值得使用.如果需要执行以下操作,或许有用:
- 从设备获取卓越性能以用于计算密集型应用,例如游戏或者物理模拟.
- 重复使用您自己或者其他开发者的C或c++库.
- 在平台之间移植应用.
从事AndroidNDK开发需要掌握的知识
1、C与C++
2、JNI开发
3、Native开发工具,交叉编译移植,Cmake,MakeFile,静态库动态库
4、Linux编程
NDK下边还有细分领域
音视频开发:
1、多媒体系统,手机摄像头的开发,音频采集和播放
2、FFmpeg音视频编解码,I帧P帧B帧的解码原理,音视频同步,H264视频编码,Faac音频编码,NativeWindow绘制,
3、视频的视觉处理,美颜滤镜,视频变速,抖音特效
3、流媒体协议。RTMPWebRTc
图像处理:
1、图像预处理,灰度化,二值化,高斯模糊,形态学操作:腐蚀,膨胀开闭操作,轮廓查找,人脸检测,身份证识别,车盘号识别
物联网开发方向:
智能家居串口开发,WIFI模块,蓝牙,MODBUS协议之类的
3、Android架构师
架构师所需的知识就更多了
1、Java基础要足够牛逼,并发编程,JVM原理,内存分析,反射和类加载机制,高效IO,字节码插桩技术,理解AndroidDavilkART,
2、高级UI和FrameWork内核,Binder机制,Handler机制,DalvikVM进程系统,AMS,WMS,Activity启动流程,Activity栈管理
3、数据结构,设计模式,设计原则,算法
4、性能优化
5、开发效率优化,Gradle自动化构建
6、各种开源框架原理
7、深入理解MVC,MVP、MVVM
8、还要学习关于跨平台的东西,Flutter,微信小程序,Hybrid开发