Smoother Android development with Kotlin
Márton Braun • AutSoft • [email protected]
Slide 2
Slide 2 text
Android APIs are sometimes hard to use
Kotlin allows us to reshape existing API
Extension functions and properties
Named and default parameters
Operator overloading
Lambdas, higher order functions, and inline functions
Everyone has their own collection of utilities…
Slide 3
Slide 3 text
Google takes a stance, creates their own
First appeared Feb 2, 2018
Goals
Only provide uniquely Kotlin APIs
Don’t provide new implementation, just new syntax
Minimize overhead, focus on zero overhead abstractions
Higher order, inline extension functions
for (i in 0 until linearLayout.childCount) {
val view = linearLayout.get(i)
Timber.d(view.tag)
}
linearLayout.forEach { view ->
Timber.d(view.tag)
}
Slide 9
Slide 9 text
Extension functions
val bitmap = Bitmap.createBitmap(
view.width, view.height, Bitmap.Config.ARGB_8888)
view.draw(Canvas(bitmap))
val bitmap = view.toBitmap()
Slide 10
Slide 10 text
Operator overloading
val color = bitmap.getPixel(100, 50)
val color = bitmap[100, 50]
bitmap.setPixel(100, 50, color)
bitmap[100, 50] = color
inline fun SQLiteDatabase.transaction(...): T {
beginTransaction()
try {
val result = body()
setTransactionSuccessful()
return result
} finally {
endTransaction()
}
}
Slide 16
Slide 16 text
Destructuring
val lat = location.latitude
val lon = location.longitude
val (lat, lon) = location
Slide 17
Slide 17 text
Explore Android KTX yourself and use it in your projects
https://github.com/android/android-ktx/
https://android.github.io/android-ktx/core-ktx/
Write your own extensions for APIs that don’t fit your needs
If these are on Android, consider submitting a PR to Android KTX