用kotlin搭建的Android框架
Overview
本項(xiàng)目用kotlin基于Rxjava2 + Retrofit2 + MVP構(gòu)架搭建的Android框架,其中包含kotlin一些基本語法的使用、kotlin單例的實(shí)現(xiàn)、kotlin泛型的使用等,其中對BaseActivity的封裝,對Retrofit2請求結(jié)果的統(tǒng)一處理、RecyclerView實(shí)現(xiàn)上拉加載下拉刷新等。對與想學(xué)習(xí)kotlin的同學(xué)可以下載下來玩玩看,后期還會繼續(xù)更新。
Screenshots
包的結(jié)構(gòu)
應(yīng)用截圖
暫時只寫了一個頁面,后期更新。
Resources
kotlin的官方github地址了:
https://github.com/JetBrains/kotlin
github trending,會有很多的新新優(yōu)質(zhì)資源:
https://github.com/trending/java
官方中文翻譯:
https://www.kotlincn.net/docs/reference/
Introduction
kotlin的配置
1.在項(xiàng)目的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"
}
這樣就配置完了當(dāng)前module已經(jīng)支持kotlin語言了
其實(shí)還有更簡單的辦法配置:
1.使用Android Studio下載Kotlin相關(guān)插件
2.隨便點(diǎn)擊一個Java文件使用快捷鍵ctrl+alt+shift+k鍵把java文件轉(zhuǎn)換成.kt文件
3.如果沒有項(xiàng)目沒有配置kotlin支持的話右上角會彈出
4.點(diǎn)擊Configure就點(diǎn)ok就自動配置好了
配置跟手動配置的文件一樣的。
kotlin單例
思路跟java一樣,這里是對retrofit進(jìn)行了單例處理,直接上代碼
/**
* Created by zengwendi on 2017/6/12.
* apiManager實(shí)現(xiàn)單列模式
*/
//主構(gòu)造方法私有化
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 }
//設(shè)置超時
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
易讀非常感謝作者,此項(xiàng)目的目錄結(jié)構(gòu)以及MVP的架構(gòu)思想從該項(xiàng)目中獲取。API也是用了改項(xiàng)目的干貨集中營API,作者對我的幫助很大。