Освой Kotlin играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Android KTX

Kotlin упростил написание кода по сравнению с Java, но нет предела совершенству. Благодаря гибкости Kotlin можно создавать расширения к существующим классам и сделать код ещё проще. Чтобы не изобретать велосипед каждый раз, наиболее удачные примеры решили выделить в отдельную группу, которая получила название Android KTX.

Пока библиотека делает первые шаги и начало положено с версии 0.1. Что-то будет дорабатываться и изменяться. Но в целом идея выглядит интересной и перспективной.

7 мая 2018 вышла версия 1.0.0-alpha1

Подключаем библиотеку.


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

Примеры

Несколько примеров для знакомства.

Uri

Если у вас есть строка, которую нужно перевести в Uri, то писали следующую конструкцию.


val uriString = "http://developer.alexanderklimov.ru/android"
val uriOld = Uri.parse(uriString)
Log.d("KTX", uri.host)

Теперь можно писать проще. Код стал читаемым.


val uriString = "http://developer.alexanderklimov.ru/android"
val uri = uriString.toUri()
Log.d("KTX", uri.host)

SharedPreferences

При работе с файлами настройки приходится писать однотипный код.


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

Сокращаем код. Разница не слишком большая, но выглядит опрятнее.


sharedPreferences.edit { 
    putBoolean(key, value) 
}

Bitmap/Drawable


// get a drawable from resources
va myDrawable = ContextCompat.getDrawable(context, R.drawable.cat)

// convert the drawable to a bitmap
val bitmap = myDrawable.toBitmap()

Span


val string = buildSpannedString {
	append("no styling text")
	bold {
		append("bold")
		italic { append("bold and italic) }
	}
	inSpans(RelativeSizeSpan(2f), QuoteSpan()){
		append("double sized quote text")
	}
}

Bundle


val bundle = bundleOf(
    "KEY_INT" to 1,
	"KEY_LONG" to 2L,
	"KEY_BOOLEAN" to true,
	"KEY_NULL" to null,
	"KEY_ARRAY" to arrayOf(1, 2, 3)
)

Обратите внимание, что в примерах используется пакет androidx, это позволит не путать их с стандартными пакетами android.

Дополнительные материалы

Introducing Android KTX: Even Sweeter Kotlin Development for Android - первая запись в блоге от разработчиков.

core-ktx - Документация

android/android-ktx: A set of Kotlin extensions for Android app development. - исходники на Гитхабе

Изучаем KTX для Android

Реклама