一、優(yōu)點
Kotlin 非常適合開發(fā) Android 應(yīng)用程序,將現(xiàn)代語言的所有優(yōu)勢帶入 Android 平臺而不會引入
任何新的限制:
1.兼容性:Kotlin 與 JDK 6 完全兼容,保障了 Kotlin 應(yīng)用程序可以在較舊的 Android 設(shè)備
上運行而無任何問題。Kotlin 工具在 Android Studio 中會完全支持,并且兼容 Android 構(gòu)
建系統(tǒng)。
2.性能:由于非常相似的字節(jié)碼結(jié)構(gòu),Kotlin 應(yīng)用程序的運行速度與 Java 類似。 隨著
Kotlin 對內(nèi)聯(lián)函數(shù)的支持,使用 lambda 表達式的代碼通常比用 Java 寫的代碼運行得更
快。
3.互操作性:Kotlin 可與 Java 進行 100% 的互操作,允許在 Kotlin 應(yīng)用程序中使用所有現(xiàn)
有的 Android 庫 。這包括注解處理,所以數(shù)據(jù)綁定和 Dagger 也是一樣。
4.占用:Kotlin 具有非常緊湊的運行時庫,可以通過使用 ProGuard 進一步減少。 在實際
應(yīng)用程序中,Kotlin 運行時只增加幾百個方法以及 .apk 文件不到 100K 大小。
5.編譯時長:Kotlin 支持高效的增量編譯,所以對于清理構(gòu)建會有額外的開銷,增量構(gòu)建通
常與 Java 一樣快或者更快。
二、Android 推薦使用的工具
1. Kotlin Android 擴展是一個編譯器擴展, 可以讓你擺脫代碼中的 findViewById() 調(diào)用,
并將其替換為合成的編譯器生成的屬性。
2.Anko 是一個提供圍繞 Android API 的 Kotlin 友好的包裝器的庫,以及一個可以用 Kotlin
3.Kotlin 用于 Android 代碼替換布局 .xml 文件的 DSL。
4.KAndroid - Kotlin library for Android
5.Bubble - 屏幕方向監(jiān)測
6.Kotpref -android sp緩存工具
7.Fuese - android內(nèi)存緩存工具
8.Kotter Knife KotlinPoet 類似黃油刀的依賴注入框架
9.Klaxon 一個解析 JSON 的庫
三、AndroidStudio配置
1.插件安裝

當(dāng)插件安裝完畢后,重啟Android Studio即可。
打開Android Studio新建一個項目,和往常一樣建立一個項目就可以了,項目建立好以后,我們會在右鍵菜單New下看到多出來Kotlin File/Class和Kotlin Activity兩個選項。

第一次新建Kotlin類后,會顯示“Kotlin not configured”,點擊“Configure”,進入Kotlin配置頁面。

根據(jù)自己的需要選擇需要配置的范圍,全部模塊或單個模塊,然后確定就可以了,我直接默認(rèn)選項過去
配置完成后會自動在你的Project下的build.gradle與moudle下的build.gradle下配置相應(yīng)的參數(shù)。
project下build.gradle中的參數(shù)

module下 build.gradle中的參數(shù)

2.把項目轉(zhuǎn)換為kotlin項目:

新建好的MainActivity.java, 注意這里是.java后綴的java文件,我們可以手動轉(zhuǎn)換為kotlin代碼


四、簡化findViewById
我們知道,Android的架構(gòu)里,xml布局文件和Activity是松耦合的,Activity中要使用界面元素,必須借助R文件對xml控件的記錄,用findViewById找到這個元素。
在Kotlin中我們可繼續(xù)使用findViewById去綁定xml布局中的控件:(TextView)findViewById(R.id.hello);
進一步引用Anko之后,可以使用find函數(shù)去綁定控件:find(R.id.hello),不需要類型轉(zhuǎn)換
同時,Kotlin還提供一種更激進的方法,通過在gradule中引用
applyplugin:'kotlin-android-extensions'
徹底取消findViewById這個函數(shù),具體做法如下:
首先,在app的gradule中,添加引用

然后,在Activity中直接根據(jù)id使用界面元素

五、Anko簡單使用(有很多坑,不建議使用)
Anko其實是一種DSL(領(lǐng)域相關(guān)語言),是專門用代碼方式來寫界面和布局的。
我們可以看看Anko在Github上的代碼示例,用6行代碼就做出了一個有輸入框、按鈕、點擊事件和Toast的界面和功能

我們自己寫一下這6行代碼,首先需要在gradle中添加引用,主要是sdk和v4/v7包
