zengwendi / KotlinBase

kotlin搭建的mvp框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

用kotlin搭建的Android框架

Overview

本项目用kotlin基于Rxjava2 + Retrofit2 + MVP构架搭建的Android框架,其中包含kotlin一些基本语法的使用、kotlin单例的实现、kotlin泛型的使用等,其中对BaseActivity的封装,对Retrofit2请求结果的统一处理、RecyclerView实现上拉加载下拉刷新等。对与想学习kotlin的同学可以下载下来玩玩看,后期还会继续更新。

Screenshots

包的结构

应用截图

暂时只写了一个页面,后期更新。

Resources

kotlin的官方github地址了:
https://github.com/JetBrains/kotlin
github trending,会有很多的新新优质资源:
https://github.com/trending/java
官方中文翻译:
https://www.kotlincn.net/docs/reference/

Introduction

kotlin的配置

1.在项目的build.gradle中

buildscript {
ext.kotlin_version = '1.1.2-4'
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}

2.module的build.gradle中

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
...


dependencies {
...
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

这样就配置完了当前module已经支持kotlin语言了
其实还有更简单的办法配置:
1.使用Android Studio下载Kotlin相关插件
2.随便点击一个Java文件使用快捷键ctrl+alt+shift+k键把java文件转换成.kt文件
3.如果没有项目没有配置kotlin支持的话右上角会弹出
4.点击Configure就点ok就自动配置好了

配置跟手动配置的文件一样的。

kotlin单例

思路跟java一样,这里是对retrofit进行了单例处理,直接上代码

/**
 * Created by zengwendi on 2017/6/12.
 * apiManager实现单列模式
 */
//主构造方法私有化
class ApiManager private constructor() {
private var mService: GankIoService? = null

companion object {
    private var mApiManager: ApiManager? = null

    val instence: ApiManager
        get() {
            if (mApiManager == null) {
                synchronized(ApiManager::class) {
                    if (mApiManager == null) {
                        mApiManager = ApiManager()
                    }
                }
            }
            return mApiManager!!
        }
}

val service: GankIoService get() {
    if (mService == null) {
        val retrofit = Retrofit.Builder()
                .client(getClient(OkHttpClient.Builder()))
                .baseUrl(GankIoService.API_GANKIO)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        mService = retrofit.create<GankIoService>(GankIoService::class.java)
    }
    return mService!!
}

//OkHttpClient 赋值
private fun getClient(builder: OkHttpClient.Builder): OkHttpClient {
    builder.hostnameVerifier { _, _ -> true }
    //设置超时
    builder.connectTimeout(10000, TimeUnit.MILLISECONDS)
    builder.writeTimeout(10000, TimeUnit.MILLISECONDS)
    builder.readTimeout(10000, TimeUnit.MILLISECONDS)
    //错误重连
    builder.retryOnConnectionFailure(true)
    return builder.build()
}

kotlin中使用kotterknife

kotterknife就是java中的ButterKnife--View注入框架。
也是由原作者JakeWharton所写
能够在Activity, Dialog, ViewGroup, Fragment和and recycler view's ViewHolder中使用
地址:https://github.com/JakeWharton/kotterknife
1.添加依赖

compile 'com.jakewharton:kotterknife:0.1.0-SNAPSHOT'

2.使用

val mRecyclerView: RecyclerView by bindView(R.id.recycler_view)
val mRefresh: SwipeRefreshLayout by bindView(R.id.refresh)

非常简单这就完成了RecyclerView与SwipeRefreshLayout的注入。

Thanks

易读非常感谢作者,此项目的目录结构以及MVP的架构**从该项目中获取。API也是用了改项目的干货集中营API,作者对我的帮助很大。

About

kotlin搭建的mvp框架


Languages

Language:Kotlin 95.0%Language:Java 5.0%