写在之前

其实我接触Android已经3年了,但是每次做新的项目的时候总是要回顾我最开始编写的程序,这说明我在最初的程序里做的好多东西都是常用的,通用性很高,这也是我想写这篇文章的目的之一:将这些东西都总结一下。
当然还有其他的目的。自从Google宣布Android Jetpack之后,有关Android和Material Design Component(MDC)的中文资料太少,好多东西你只能通过Stack Overflow或者官方英文文档才能搜到。前者里面你搜到的问题可能和你的问题不符,后者有的时候非常鸡肋(例如Navigation控件的例子)看得头疼就想看他源码怎么写的,但是找源码看还费时费力。因此,我想写这篇文章总结一下我这几年遇到过的问题和解决方案,下次遇到同样问题的时候不是去看我自己曾经写过的代码,而是看这篇文章就能找到解决问题的办法。
虽然左侧有了目录,但是在这里我还是像列举一下我这篇文章的结构,以及我接下来要补充的内容。

  • 写代码得有个好习惯
  • 帮你节省时间的持续集成:Travis CIGitHub Action
  • 从最基础的布局开始:ConstraintLayout 1.0
    • 重点介绍对象
    • 这是有史以来第一次Android实现了拖动放置模块(其实以前也行,但是拖进去之后要写一堆margin和padding,或者LinearLayout堆叠)
    • 2.0以及MotionLayout我还没有研究,等之后吧
  • 必须使用的绑定组件工具:ViewBinding
    • 重点介绍对象
    • ViewBinding很好用,每个写Android程序的人都要使用一下
  • 全新的可持续化数据方式:DataStore
    • 重点介绍对象
    • 需要知道的前置知识:Kotlin Coroutine与Flow
    • 2020年12月我重点攻克对象
    • 重点说说Preferences,Protobuf目前用不到,到时候再说
  • 简单易用的ORM数据库包:Room
    • 由于额外添加了DataStore的介绍,所以本节提前
  • 最强大的列表控件:RecyclerView
    • DiffUtil很好用,每个用Recycler且要频繁更新数据的人都要试试
  • 现代化的设计模式:MVVM模式以及ViewModelLiveData
    • 正在探索中
  • 全盘Fragment化的基础:Navigation导航组件
    • 配合Material自带的过渡动画(Transition)
  • 创建属于自己个性化的应用:Style样式以及Theme主题的自定义
  • 一些其他交互组件的集合
    • 该模块主要是一些大家比较常用的Material Design View的集合,包括ButtonBottomAppBarSnackbar等等
    • 首发记录BottomAppBarSnackbar以及FloatingActionButton之间的配合关系
  • 完全不一样的创建Android工程的方式:Android ComposeFlutter搁置中,咕咕咕,自己现在尝试Desktop版的Compose,太不完善了

本篇文章都是使用Kotlin和Android Studio进行编写。

顺便在这里写一下整篇文章的更新历史,以便各位寻找:

时间 内容
20201026 创建文章,完成1.1-2.1章节
20210106 更新1.5的内容,增加Java 11警告
20210112 完成2.2章节,格式修正
20210218 完成2.3章节,格式修正
20210308 因为DataStore API更改,因此修正2.3章节,调整未来计划