從Android項目學(xué)習(xí)Kotlin(一)

一、優(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.插件安裝
image.png

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


image.png

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


image.png

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

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


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

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


image.png

image.png

四、簡化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中,添加引用


image.png

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


image.png

五、Anko簡單使用(有很多坑,不建議使用)

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

image.png

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容