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 進行釋出。