爽翻天!告别Java。一起来使用kotlin开发完整客户端

原创 2016年11月28日 08:39:27

必须写在前面:从Java转向Kotlin,只需要几天时间!

本篇是kotlin开发Android系列教程的最后一篇。前面几篇介绍了kotlin的基本语法、与java的不同之处等。在本篇文章中,将使用到前面的知识点,从零开发一款Gank.io 干活集中营App(感谢Gank提供的Api)。 该App完全使用了Kotlin语言开发,基于MVP模式,并使用如下主流开源框架:

除了以上主流库,还运用到了我的一个导航栏滑动隐藏库:

该项目地址为GankClient-Kotlin ,如果你想学习Kotlin,那么这个项目应该会给予你不少的帮助。

界面风格采用了MD风格,多数控件都是design包里的内容。主要实现了一个客户端该有的内容,界面交互,信息展示,数据获取等等。

笔者已经将Kotlin运用在项目开发2个月了,期间难免有一些坑,但是在坑之外,是他带给我的快感,从此以后。用Kotlin写代码相较于Java完全是一种享受。鉴于有些同学没有看前面的文章,这里再简单介绍一下Kotlin。

Kotlin是又一个基于JVM的语言,由JetBrains开发(你用的Android Studio就是他家的)。 如果你有java基础,那么他上手极其容易。

除了无缝调用java(所有java类、java库皆可不作任何处理的兼容)、一键将java转为Kotlin、空指针安全这些特性,还有许多比Java屌的特性。下面举一些栗子:

1.代码量对比( 参考使用Kotlin开发Android(一)):

Java


    TextView textView = findViewById(R.id.textView);

    textView.setText("Hello World");

Kotlin


    textView.text = "hello kotlin"

下面是扩展函数展示,参考使用Kotlin开发Android(二)

扩展函数简单来说,就是将某个类不通过继承动态扩展,来添加方法等,比如下面的toast就是扩展了Context类。

Java


    Button button = findviewbyid(R.id.button)
    button.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
            Toast.makeText(this,"hello java",Toast.LENGTH_SHORT);
        }
    });

Kotlin

    button.setOnClickListener {toast("hello kotlin")}

POJO类(Java Bean对比)

java

public class User {
    private String name;
    private String id;

    public User(String name, String id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

kotlin (不要被吓到,确实这么短!!)


    data class User(var name: String, var id: String)

栗子完毕

相信看到上面的一些代码对比,大家心里已经比较清楚kotlin的特点了。相比java,代码少了至少三倍。这简直是大快人心!

开发完整App客户端

现在,假定你已经了解了Kotlin的基本用法,那么我将给你介绍这个客户端App的结构。

MVP

通过契约类Contract管理View Model Presenter接口(如果你项目写烦了MVP,那么安利下自动生成MVP代码的插件MVPHelper)。

  • Model – 主要处理业务,用于数据的获取(如网络、本地缓存)。
  • View – 用于把数据展示,并且提供交互。
  • Presenter – View和Model交互的桥梁,二者通过Presenter建立联系。

    主要流程如下: 用户与View交互,View得知用户需要加载数据,告知Presenter,Presenter则告知Model,Model拿到数据反交于Prsenter,Presenter将数据交给View进行展示。

    偷一张老图:


Dagger2

项目中,主要进行presenter、model、retrofit Api等类的注入操作。这里不做详细Dagger2用法解释,还不太会的同学可以先去拜读下大神的教程。Dagger2在Kotlin中使用有一些配置是不一样的,详细配置请看项目源码

ApiComponent

主Component、用于注入AppComponent、便于提供子Component依赖。

 依赖于:

 1.ApiModule(提供okhttpClient、Retrofit、Api等)

 2.AppModule(提供context对象(okhttp拦截器所需))

FuckGoodsComponent

父Component为ApiComponent 用于注入FuckGoodsPresenter

 依赖于: FuckGoodsModule(提供FuckGoodsView)

RandomComponent

父Component为ApiComponent 用于注入RandomPresenter

依赖于 : RandomModule(提供RandomView) 

Rxjava + Retrofit + okhttp3

主要用于网络访问。这些都是主流的库,使用方式与java相同(当然除了语法以外)


DeepLinkDispatch

基于路由进行页面转发。可以解决多人多模块协作转跳的问题。

GankClientUri 定义一些路由规则、URI等

GankRouter 统一由此进行路由操作


GSON

用于json的解析操作。


Glide

用于图片的加载。


ByeBurGer

用于导航栏以及悬浮按钮滑动隐藏。


本客户端项目的地址:
https://github.com/githubwing/GankClient-Kotlin

开源本客户端的原因旨在让更多人了解Kotlin,接触Kotlin,从而使用Kotlin,实在是好东西不敢私藏。并且希望通过Kotlin能认识更多志同道合的朋友们,一起讨论技术共同进步。

如果该项目能帮助到你学习Kotlin,那是最好不过的事情了。欢迎star.

版权声明:本文为博主原创文章,欢迎注明出处后转载。

java代码转换成 kotlin

Kotlin plugin包含了一个有趣的特性,它能把Java代码转成Kotlin代码。 所以我们在MainActivity.java类中使用它。打开文件,然后选择 Code -...
  • q9104422999
  • q9104422999
  • 2017年07月23日 16:09
  • 4301

如何把Kotlin代码转成java代码,如何把java代码转成kotlin代码

其实就是互转,以下基于IDEA或Android StudioJava转Kotlin打开要转的文件方法1Ctrl+Shift+Alt+K方法2Code - Convert Java File To Ko...
  • lftaoyuan
  • lftaoyuan
  • 2017年09月07日 17:04
  • 9579

Kotlin开发AndroidStudio,IDEA配置/java转换Kotlin

Kotlin维基百科地址:https://zh.wikipedia.org/wiki/Kotlin 百度百科:http://baike.baidu.com/view/9189237....
  • wapchief
  • wapchief
  • 2016年09月01日 15:33
  • 4252

Android Studio Kotlin插件的简单使用

打开Java文件,然后选择工具栏的Code -> Convert Java File to Kotlin File。
  • u010675012
  • u010675012
  • 2017年05月21日 00:13
  • 2774

我为什么放弃java学习Kotlin?

Kotlin简介Kotlin早已是Android开发中的热门话题了,github上越来越多的项目是用Kotlin开发。但是这门语言一直处于很尴尬的境地,一方面自己不遗余力的挖掘自己在Android开发...
  • sw950729
  • sw950729
  • 2017年05月19日 22:21
  • 24325

Kotlin最简单的入门教程——与Java互相调用

Kotlin 中调用 Java 代码import java.util.*fun demo(source: List) { val list = ArrayList() // “for”...
  • handongyu2011
  • handongyu2011
  • 2017年06月15日 10:49
  • 2069

使用Kotlin进行服务器端开发

开发优势Kotlin非常适合开发服务器端应用程序,用它可以编写简洁明了的代码,同时保持与现有基于Java的技术堆栈的完全兼容性和平滑的学习曲线: 表现力:Kotlin语言创新一些功能,如支持类型安全的...
  • xiangzhihong8
  • xiangzhihong8
  • 2017年11月17日 11:09
  • 642

Kotlin 资源大全 - 学 Kotlin 看这一篇教程就够了

目录 介绍官网及文档中文社区教程 & 文章开源库和框架Demo其他 介绍 为什么要做这个? 今天凌晨的 Google I/O 上,Google 正式宣布官方支持 Kotlin. 为了让大家更快了...
  • cenzr
  • cenzr
  • 2017年05月24日 11:37
  • 13507

android安卓java文件转kotlin格式

下面我们要分四步完成Kotlin的配置。 新建一个Android项目。 修改Gradle代码来添加Kotlin Gradle插件与标准库。 在IntelliJ或And...
  • qq_37173653
  • qq_37173653
  • 2017年06月22日 23:10
  • 1400

Kotlin从入门到『放弃』系列 视频教程

随着Kotlin越来越成熟稳定,我已经开始在生产环境中使用它。考虑到目前国内资料较少,我录制了一套视频教程,希望以此抛砖引玉,让 Kotlin 在国内火起来。...
  • Enbandarix
  • Enbandarix
  • 2016年12月12日 14:23
  • 9531
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:爽翻天!告别Java。一起来使用kotlin开发完整客户端
举报原因:
原因补充:

(最多只允许输入30个字)