官方新出的 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(),調用一下,就解決問題了。

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 有什么看法?不妨在留言區留言討論一下!

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

推薦閱讀:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM