一鬓椭、優(yōu)點
Kotlin 非常適合開發(fā) Android 應用程序蕊程,將現(xiàn)代語言的所有優(yōu)勢帶入 Android 平臺而不會引入
任何新的限制:
1.兼容性:Kotlin 與 JDK 6 完全兼容,保障了 Kotlin 應用程序可以在較舊的 Android 設備
上運行而無任何問題撬即。Kotlin 工具在 Android Studio 中會完全支持库菲,并且兼容 Android 構(gòu)
建系統(tǒng)。
2.性能:由于非常相似的字節(jié)碼結(jié)構(gòu)卫旱,Kotlin 應用程序的運行速度與 Java 類似。 隨著
Kotlin 對內(nèi)聯(lián)函數(shù)的支持绣否,使用 lambda 表達式的代碼通常比用 Java 寫的代碼運行得更
快誊涯。
3.互操作性:Kotlin 可與 Java 進行 100% 的互操作挡毅,允許在 Kotlin 應用程序中使用所有現(xiàn)
有的 Android 庫 蒜撮。這包括注解處理,所以數(shù)據(jù)綁定和 Dagger 也是一樣跪呈。
4.占用:Kotlin 具有非常緊湊的運行時庫,可以通過使用 ProGuard 進一步減少。 在實際
應用程序中荆几,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.插件安裝
當插件安裝完畢后卦停,重啟Android Studio即可向胡。
打開Android Studio新建一個項目恼蓬,和往常一樣建立一個項目就可以了,項目建立好以后僵芹,我們會在右鍵菜單New下看到多出來Kotlin File/Class和Kotlin Activity兩個選項处硬。
第一次新建Kotlin類后,會顯示“Kotlin not configured”淮捆,點擊“Configure”郁油,進入Kotlin配置頁面。
根據(jù)自己的需要選擇需要配置的范圍攀痊,全部模塊或單個模塊桐腌,然后確定就可以了,我直接默認選項過去
配置完成后會自動在你的Project下的build.gradle與moudle下的build.gradle下配置相應的參數(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(領域相關語言)爬早,是專門用代碼方式來寫界面和布局的哼丈。
我們可以看看Anko在Github上的代碼示例,用6行代碼就做出了一個有輸入框凸椿、按鈕削祈、點擊事件和Toast的界面和功能
我們自己寫一下這6行代碼,首先需要在gradle中添加引用,主要是sdk和v4/v7包