项目地址:https://github.com/oner0128/SeeWhat-Kotlin
目的
在今年的Google 2017 I/O大会上,Google将Android开发的官方语言更换为Kotlin,作为一名还没上路的小菜鸟,本着学习kotlin及掌握谷歌官方android框架的目的,决定撸一款由Kotlin编写的基于Android-architecture todo-mvp-rxjava的个人demo,并采用了目前热门的第三方库Rxjava + Retrofit + OkHttp。
Kotlin虽好,但是Java还是不可放弃的,因为现有大多项目或第三方开源库都是Java编写的,要读懂这些库的源码还是需要Java的。
Kotlin在Android开发中的优势
Kotlin在Android开发中有很多优势,在这里我们简单介绍两点:
1.简化findViewById或取消findViewById
在XML中定义控件后,我们需要在Activity中通过findViewById来找到该控件进行绑定,从而对控件进行调用,当然你也可以使用JakeWharton大神的butterknife来进行控件绑定。目前,在Android中使用findViewById已经不必再进行类型转换了。
在Kotlin中,只要你在Gradle中配置了kotlin-android-extensions,可以不用再写烦人的findViewById,直接使用在XML设置的ID即可实现对控件的操作。
在Gradle中配置kotlin-android-extensions(在Android Studio 3中一般都默认配置了)
在XML中定义控件并指定ID
在Activity中直接使用id操作控件
就是这么简单,完全不用再写findViewById了
2.单例模式
单例模式是应该算是最常用到的设计模式,Kotlin从语言级别提供关键字Object来实现单例模式,即该对象只会生成一份。
基于谷歌官方MVP-RXJAVA框架
本App基于谷歌官方MVP-RXJAVA框架,谷歌官方推出了Android推荐框架,包括MVP和MVVM两大类,可以细分为下图中的多种:
大家也可以自己去阅读其中的源码,看看这些模式是如何实现的,谷歌官网给出的例子还是非常简洁的,代码也很容易读懂,代码量不高。
MVP模式是目前Android开发中主流的框架,主要思想是利用Presenter层将VIew层和Model层解耦,VIew层和Model层通信全部通过Presenter层,简化我们的代码逻辑,易于编写和维护。
本APP基本是按照谷歌上图的架构进行实现的,项目目录如下:
开源库
1. Rxjava + Retrofit + OkHttp网络请求框架
Rxjava + Retrofit + OkHttp 应该算是目前最热门也是最常采用的网络请求框架。使用这么框架可以快速完成APP的网络请求功能,我个人认为没必要重复造轮子,有现成的成熟的框架,直接拿来用就可以了,但是我们最好了解一下这些框架的原理和实现,当这么框架不能满足我们的需求时,再自己造轮子。
因此,不建议大家用GitHub上一些在这么库上再次封装的第三方开源库,第三方开源库虽然使用过程中代码更少,但是再次封装在我们需要实现自己需求而进行改造时对于阅读源码又增加了工作量和难度,所以建议使用官方的代码即可。
如果对这三个库的还不了解,可以参考下面的教程:
Rxjava 教程
官方中文教程
给 Android 开发者的 RxJava 详解
Retrofit教程
你真的会用Retrofit2吗?Retrofit2完全教程
Okhttp 教程
OkHttp 官方教程解析 - 彻底入门 OkHttp 使用
2. 一些通用且常用的框架(Glide、leakcanary、Logger等等)
Logger 日志打印
Github地址:https://github.com/orhanobut/logger
Gson json 数据解析
Gson Github地址:https://github.com/google/gson
leakcanary 内存泄漏检测工具
Github地址:https://github.com/square/leakcanary
Glide 图片请求库
Github地址:https://github.com/bumptech/glide
PhotoView 图片库
Github地址:https://github.com/hdodenhof/CircleImageView
SQLBrite 对SQLite的轻量级封装,并支持RxJava
Github 地址:https://github.com/square/sqlbrite
如果你觉得项目对你有帮助,请点个fork,star,follow,谢谢你的关注。
项目地址:https://github.com/oner0128/SeeWhat-Kotlin