未完待续
github
https://github.com/STUFelix/WorryFreeTutor
技术栈
Kotlin(include Kotlin support)
Kotlin的优势
- 背景雄厚,未来应该较好: Kotlin是由JetBrains公司研发并开源,且在2017年 google I/O 上,google认定Kotlin为第一开发语言。
- Interoperable:Leverage existing libraries for the JVM, Android, and the browser.
- 安全: 可以轻松防止在java中常见的
NullPointerException
问题。 - Concise: Drastically reduce the amount of boilerplate code.
- 和Java百分百兼容: Kotlin、java可相互调用的代码和库,在一个项目中可以同时用Java和Kotlin来编写代码,且两者可以通过简单操作(如Android studio 上一个快捷键)完成相互转换。
项目组成员的学习方式
Kotlin官网: https://kotlinlang.org/docs/reference/
掘金Kotlin专题https://juejin.im/tag/Kotlin
简书Kotlin专题https://www.jianshu.com/c/98aaef9f5d2f
MVVM模式
google发布MVVM : DataBinding + ViewModel + LiveData+Livecycle
https://developer.android.com/topic/libraries/architecture/index.html
为什么选择
- MVP模式存在一定的弊端:
- V 与 P 存在一定的耦合度。 一旦V层某个UI元素更改,那么对应的接口,数据如何映射到UI,事件监听接口都需要转变,牵一发而动全身。
- 复杂的业务会导致P层太大,依旧会出现代码臃肿问题(同MVC中的Activity,出现臃肿问题)
- MVP是以UI为驱动的模型。(而MVVM是以数据为驱动的模型)
- google 2015年推出DataBinding框架(其为构造MVVM的一个工具)
项目组成员的学习方式
MVVM
https://tech.meituan.com/2016/11/11/android-mvvm.html
https://github.com/xitu/gold-miner/blob/master/TODO%2Fapproaching-android-with-mvvm.md
DataBinding
UI设计
UI设计的原则
简单 清晰 一致性 熟悉感 层次感 高效(响应高效,操作高效) 人性
Android Material Design
为了解决Android平台的界面风格长期难以统一的问题,google在2014年Google I/O大会上重磅推出了一套全新的界面设计语言——Material Design(为什么能统一呢?因为以前的标准实在太丑,所以很多公司都自行设计)。后来为了解决开发者上手难问题,google在2015年Google I/O大会推出了一个Design Support库,将Material Design中最具有代表性的一些控件和效果进行了封装。
项目组成员的学习方式
Android Animation
主界面使用BottomNavigationBar+Fragment+ViewPage仿照主流APP。
Retrofit2 + Rxjava2 +Dagger2
为什么选择
项目组成员的学习方式
Fresco
为什么选择
项目组成员的学习方式
其他优化
代码规范:
阿里巴巴android开发手册.pdf
阿里巴巴Java开发手册v1.2.0.pdf
阿里云镜像仓库代替google官方依赖
解决Android Studio加载gradle慢的问题
buildscript {
repositories {
// mavenCentral()
// jcenter()
// google()
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
allprojects {
repositories {
// mavenCentral()
// jcenter()
// google()
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
其他技术
Butterknife
https://www.jianshu.com/p/3678aafdabc7
RecycleView
设计模式与设计原则
https://www.jianshu.com/p/6e5eda3a51af
https://juejin.im/post/5a51ef536fb9a01c9a2692b2