用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP

用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第1张图片


项目地址: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中一般都默认配置了)


用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第2张图片


在XML中定义控件并指定ID

用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第3张图片

在Activity中直接使用id操作控件


用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第4张图片

就是这么简单,完全不用再写findViewById了

2.单例模式

单例模式是应该算是最常用到的设计模式,Kotlin从语言级别提供关键字Object来实现单例模式,即该对象只会生成一份。

用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第5张图片

基于谷歌官方MVP-RXJAVA框架

本App基于谷歌官方MVP-RXJAVA框架,谷歌官方推出了Android推荐框架,包括MVP和MVVM两大类,可以细分为下图中的多种:


用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第6张图片
android-architecture

大家也可以自己去阅读其中的源码,看看这些模式是如何实现的,谷歌官网给出的例子还是非常简洁的,代码也很容易读懂,代码量不高。

MVP模式是目前Android开发中主流的框架,主要思想是利用Presenter层将VIew层和Model层解耦,VIew层和Model层通信全部通过Presenter层,简化我们的代码逻辑,易于编写和维护。


用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第7张图片
谷歌官方的MVP模式

本APP基本是按照谷歌上图的架构进行实现的,项目目录如下:


用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第8张图片
本APP目录结构


用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP_第9张图片
谷歌官方MVP-RXJAVA目录结构

开源库

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

你可能感兴趣的:(用Kotlin撸一款基于谷歌官方MVP-RXJAVA框架的APP)