1. 程式人生 > >ktolin開發android的擴充套件包android-ktx

ktolin開發android的擴充套件包android-ktx

android-ktx是谷歌剛剛開源的使用kotlin開發android的擴充套件包,它的目的是為了讓使用kotlin開發android更簡潔。目前只是釋出的預覽版本。可以體驗一下,預覽版說明以後的api可能會稍微變動變。
android-ktx 目前支援的元件有 view ,SharedPreferences ,Canvas , Animator等

首先使用android-ktx 需要在gradle中引入包

 implementation 'androidx.core:core-ktx:0.1'

使用kotlin把一個字串轉換成Uri可以這麼寫

val uri = Uri.parse(myUriString)

使用android-ktx 可以簡化為

val uri = myUriString.toUri()

使用kotlin編寫偏好設定SharedPreferences

sharedPreferences.edit()
    .putBoolean("key", value)
    .apply()

使用android-ktx 可以直接使用Lambda表示式簡化

sharedPreferences.edit {
    putBoolean("key", value)
}

如果我們想使用繪圖api將兩條路徑平移100畫素 使用kotlin

val pathDifference = Path(myPath1).apply
{ op(myPath2, Path.Op.DIFFERENCE) } canvas.apply { val checkpoint = save() translate(0F, 100F) drawPath(pathDifference, myPaint) restoreToCount(checkpoint) }

使用android-ktx簡單多

val pathDifference = myPath1 - myPath2

canvas.withTranslation(y = 100F) {
    drawPath(pathDifference, myPaint)
}

如果我們想在繪製之前做些事情使用kotlin是

//繪製前的監聽
view.viewTreeObserver.addOnPreDrawListener(
    object : ViewTreeObserver.OnPreDrawListener {
        override fun onPreDraw(): Boolean {
            viewTreeObserver.removeOnPreDrawListener(this)
            actionToBeTriggered()
            return true
        }
    })

使用android-ktx只需要一句話

view.doOnPreDraw {
     actionToBeTriggered()
}

比如當我們使用android-ktx 寫動畫的時候 可以直接監聽它的回撥

animator.addListener { handleAnimation(it) }

也可以監聽動畫的各種周期函式

animator.addListener(
        onEnd = {}, 
        onStart = {}, 
        onCancel = {}, 
        onRepeat = {}
)

在比如讓一個文字加粗

val builder = SpannableStringBuilder(urlString)        
    .bold { append("hi there") }

讓一個bitmap物件轉換成drawable 物件更加容易

 var birmap = BitmapFactory.decodeResource(resources,R.drawable.ic_launcher_background)
 val toDrawable = birmap.toDrawable(resources)

還有很多,都可以在文件中看到。不過現在是預覽版,以後穩定版的api可能有所變動。
Android KTX 的擴充套件包名稱都以 androidx 開頭,同時,今後 Android Support Library 包也將採用該新字首。谷歌希望通過區分命名 android.* 和 androidx.*,能幫助開發者更清楚地辨識哪些 API 是和平臺繫結的,哪些又是為穩定版支援庫開發的,幫助開發者為不同版本的 Android 進行 App 開發。

未來谷歌計劃將 Android KTX 作為 Android Support Library 進行釋出。