Piasy · 更新于 2018-11-28 11:00:42

安卓开发技能树

界面实现UI

  • 快速布局实现
    • 从设计图、效果图中,快速拆分区块,确定每一区块用什么View实现
    • 快速编写xml文件,实现静态效果图
    • xml文件编写符合规范:缩进、dimen、color、string均抽取到values目录下的相应文件中
  • 第三方库
    • 系统控件无法满足需求时,能快速确定是否有合适的第三方库
  • 屏幕适配
    • 采用边距方式相对定位,而不是绝对坐标,大小的确定也要考虑屏幕大小
    • 主流尺寸开发,其他尺寸发现bug后修复
  • 处理手机屏幕旋转
  • 高级/炫酷/复杂 视觉/交互效果的实现

界面实现功能

  • 逻辑控制、数据处理、显示,三者分离(MVC/MVP)
  • 异步处理,线程(RxAndroid)

动效

  • 基本动效搭配、时间轴
  • 引导动画
  • 过场动画

Material design

测试

  • 单元测试
  • 集成测试(UI测试)
  • TDD

性能优化

  • 时间
    • 数据处理、操作时间复杂度,不阻塞UI更新,不掉帧;
  • 空间
    • 内存使用优化,引用、内存管理,减小运行内存,避免内存泄漏;

架构

视野

安卓系统

Java

设计模式

Debug/解决问题

  • 定位代码位置的能力:stacktrace分析,打log分析,traces分析,回滚测试,二分查找,去掉代码定位bug代码位置
  • 定位代码位置后分析bug原因,并设计解决方案,尽量减小对其他部分的修改、影响
  • 经验,遇到过的bug,同时能整理总结,遇到同样的bug能有印象

安卓开发者之间的区分点是什么?

  • 代码质量
    • 可读性,风格符合规范
    • 可维护性,代码结构好,改bug不会因为改代码而头疼
    • 可扩展性,开闭原则,后续加功能,通过增加模块/类来实现,而不是修改已有类,这样能降低修改引入的风险
    • 可测试性,高测试覆盖,用测试用例保证代码逻辑质量
  • TDD,真正的TDD,先有测试,再有实现
  • 视野
  • 经验
  • 紧跟、引领技术潮流(视野+能力)