官方新出的 Kotlin 擴充套件庫 KTX,到底幫你幹了什麼?

承香墨影發表於2018-02-07

官方新出的 Kotlin 擴充套件庫 KTX,到底幫你幹了什麼?

Kotlin KTX

2月5號的時候,Google 釋出了一款 Kotlin 的擴充套件庫,叫 Android KTX,不過現在還處於預覽版的狀態。它能使 Android 上的 Kotlin 程式碼更簡潔,從而提高開發者的效率和使用體驗。

Android KTX 其實就是一個 Kotlin 程式碼的擴充套件庫,Google 把我們開發的時候,比較常用的一些程式碼塊,進行封裝,然後在這個基礎上,提供更良好的 API,供開發者使用。舉個例子:以前你需要些三五行程式碼才可以實現的功能,用上 Android KTX 之後,一行程式碼搞定了。意不意外,驚不驚喜!

說明白 Android KTX 是什麼之後,你是不是想說,這不就是 Java 下的 XxxUtils 庫麼?

其實還真就是一樣的,只是因為 Kotlin 的 Extensions 特性,讓這個擴充套件庫看著更無縫了,就像是在使用一些原生的 API 一樣。

舉個例子

說的那麼好,我們上幾個個官方提供的例子,來看看 Android KTX 的方便之處。

1 字串轉 URI

通常我們需要使用 Uri.parse() 方法,來講一個 String 物件轉換成一個 Uri 物件。但是 Android KTX 為 String 增加了一個擴充套件函式toUri(),呼叫一下,就解決問題了。

官方新出的 Kotlin 擴充套件庫 KTX,到底幫你幹了什麼?

2 寫入 SharedPreferences

讀寫 SharedPreferences 是一個非常常見的操作,之前還需要 呼叫 edit() 獲取一個用於編輯的物件。現在這個操作又被 Android KTX 簡化了。

spdemo

3 監聽 onPreDraw 回撥

如果你想增加 OnPreDrawListener 的監聽,Android KTX 可以幫你節省很多程式碼。

doPreDraw

這幾個例子都是 Google 部落格中提及的例子,應該算是比較有代表性的了。從例子中可以看出 Android KTX 做的就是精簡程式碼的事情,讓我們開發起來更簡潔和高效。

如何使用

雖然 Android KTX 現在還是預覽版,但是你依然可以體驗它。只需要在 Gradle 中新增依賴即可。

repositories {
    google()
}

dependencies {
    // Android KTX for framework API
    implementation 'androidx.core:core-ktx:0.1'
    ...
}
複製程式碼

同步一下即可使用,非常的方便。

需要注意的是,畢竟是預覽版,可能會有不確定的問題,所以 Google 推薦在正式版來臨之前,千萬不要在商業專案中使用它。

同時 Google 表示,預覽版只是一個開始,在接下來的幾個月裡他們會根據開發者的反饋和貢獻,對 API 進行迭代,會在迭代的過程中,考慮 API 的相容性。最終可能計劃將 Android KTX 作為 Android Support Library 的一部分。

感受到 Google 的誠意了吧?讓我們拭目以待吧!

Android KTX 的更多細節

畢竟是一個預覽版,本身來說到這裡就已經算是結束了,不過我們還是要看看文件和原始碼來分析一下。

簡單閱讀一下 Android KTX 的文件,其實內容還是很多的,不僅僅是前面舉的那些例子。

Packages

從動畫到 Text 以及 View 的處理,其實都被 Android KTX 涉及到了,算是已經包含了大部分我們的常用操作了。

拿前面舉例的 SharePreferences 寫入的例子來看,它在 androidx.context 包下面。

sp-dome

看文件寫的很清晰了,隨手試一試就能知道怎麼用。

不過程式碼更簡單。

sp-code

有興趣可以看看文件和 Github 上的程式碼。

Doc:

https://android.github.io/android-ktx/core-ktx/

Github:

https://github.com/android/android-ktx

Android KXT 的程式碼都很簡單,不會包含大段的程式碼,都是一些小功能的封裝,有興趣直接上 Github 上閱讀即可。

簡單閱讀了程式碼之後,感覺這個庫吧,不會有什麼大坑,自己公司有興趣都可以參考著自己寫一個擴充套件庫出來。可以放心私用,不過還是期待正式版的釋出。

你對 Google 釋出的 Android KTX 有什麼看法?不妨在留言區留言討論一下!

今天在公眾號後臺回覆成長『成長』,將會得到我整理的一些學習資料,也能回覆『加群』,一起學習進步。

推薦閱讀:

官方新出的 Kotlin 擴充套件庫 KTX,到底幫你幹了什麼?

相關文章