當 Kotlin 趕上 Android KTX,豈止絲滑?

Kotlin 語言自從獲得 Google 的官方認定以後,在 Android 開發這條路上的發展可謂是一馬平川。不只是 Android Studio 3.0 開始默認自動支持 Kotlin 語言,還有一件更爲驚喜的事。java

Google 於上週正式對外發布 Android KTX 預覽版。android

Android KTX 是什麼呢?簡單來講,它就是相似於咱們開發中經常使用的 Support Library 這種支持類庫,提供一些很是人性化的 APIs 來幫助使用開發人員更簡潔、更符合編程習慣地編寫 Kotlin 代碼。git

接下來舉幾個例子,來見證一下使用 Android KTX 框架先後,咱們的 Kotlin 代碼究竟變化多少,是否是更加簡潔、天然一些。程序員

String to Urigithub

使用 Kotlin 將一個 String 對象轉化成 Uri 對象是這麼寫的:編程

val uri = Uri.parse(myUriString)
複製代碼

Android KTX 框架在 String 的基礎上進行擴展,增長更多的方法,因此上面這行代碼便能這麼寫:canvas

val uri = myUriString.toUri()
複製代碼

這樣的話,你沒必要再單獨引入 Uri 類,寫起來是否是有一種行雲流水、一鼓作氣的感受?微信

SharedPreferencesapp

Kotlin:框架

sharedPreferences.edit()
           .putBoolean(key, value)
           .apply()
複製代碼

Kotlin with Android KTX:

sharedPreferences.edit { 
    putBoolean(key, value) 
}
複製代碼

canvas path 操做

Kotlin:

val pathDifference = Path(myPath1).apply {
   op(myPath2, Path.Op.DIFFERENCE)
}

val myPaint = Paint()

canvas.apply {
   val checkpoint = save()
   translate(0F, 100F)
   drawPath(pathDifference, myPaint)
   restoreToCount(checkpoint)
}
複製代碼

Kotlin with Android KTX:

val pathDifference = myPath1 - myPath2

canvas.withTranslation(y = 100F) {
   drawPath(pathDifference, myPaint)
}
複製代碼

View onPreDraw 動做

Kotlin:

view.viewTreeObserver.addOnPreDrawListener(
       object : ViewTreeObserver.OnPreDrawListener {
           override fun onPreDraw(): Boolean {
               viewTreeObserver.removeOnPreDrawListener(this)
               actionToBeTriggered()
               return true
           }
       })
複製代碼

Kotlin with Android KT:

view.doOnPreDraw { actionToBeTriggered() }
複製代碼

諸如此類的例子還有不少。能夠看出,使用 Android KTX 極大地簡化咱們的 Kotlin 代碼。

只要你在 app/build.gradle 文件中引入 Android KTX 的依賴配置:

repositories {
    google()
}

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

開發時,IDE 會自動根據你的代碼智能提示,自動補全相關代碼。

還有一點值得一提的是,Android KTX 使用一個全新的 包名前綴:androidx。Google 但願未來提供 Android Support Library 包時,開發人員可以明顯地區分出 *android. **與 *androidx. **這兩種 API 的使用。這是一個體貼入微的設計細節,Google 想得很是周到。

Android KTX 的源碼已經放在 GitHub 倉庫中,目前還在完善改進當中:

github.com/android/and…

關於我:亦楓,博客地址:yifeng.studio/,新浪微博:IT亦楓

微信掃描二維碼,歡迎關注個人我的公衆號:安卓筆記俠

不只分享個人原創技術文章,還有程序員的職場遐想

相關文章
相關標籤/搜索