diff --git a/kotlin-extensions/README.md b/kotlin-extensions/README.md new file mode 100644 index 0000000..7e23a7a --- /dev/null +++ b/kotlin-extensions/README.md @@ -0,0 +1,67 @@ +kotlin-extensions +===== + +Модуль содержит extension-функции для `Activity`, `Context`, `Delegates`, `TextView`, `View` и `ViewHolder`. + +### Основные интерфейсы и классы + +##### Расширения для `Activity`: + +* *safeStartActivityForResult* - функция для запуска нового активити с `requestCode`, который будет передан в *onActivityResult* при завершении работы данного активити. Находит наиболее подходящий активити для выполнения действия. Если не будет найден ни один активити для выполнения действия, то функция ничего не сделает и вернет `false`. + +##### Расширения для `Context`: + +* *safeStartActivity* - функция запуска активити, аналогична *safeStartActivityForResult*, но не позволяет передать `requestCode`. + +* *openBrowser* - функция для открытия ссылки в браузере через *safeStartActivity*. + +* *callToPhoneNumber* - функция для открытия программы "Телефон" с переданным номером телефона через *safeStartActivity*. + +##### Расширения для `TextView`: + +* *drawableStart*, *drawableTop*, *drawableEnd*, *drawableBottom* - функции для установки и получения `Drawable` на соответсвующих позициях. + +##### Расширения для `View`: + +* *setOnRippleClickListener* - функция для добавления Ripple-эффекта и действия, которое будет выполняться при нажатии на `View`. + +##### Расширения для `ViewHolder`: + +* *ViewHolder.findViewById* - функция для поиска `View`, расположеного внутри *itemView*. + +* *ViewHolder.getText* - функция для получения текста из ресурсов. + +* *ViewHolder.getString* - функция для получения строк из ресурсов. Может также принимать вторым аргументом и далее - строки, которые будут подставлены вместо специальных символов в строку из ресурсов. + +* *ViewHolder.getColor* - получить цвет в виде `Int` из ресурсов. + +* *ViewHolder.getColorStateList* - получить `ColorStateList`, который ассоциируется с переданным цветом. + +* *ViewHolder.getDrawable* - получить `Drawable` из ресурсов. + +##### Расширения для `Delegates`: + +* *observable* - подписка на изменения свойства, принимает `initialValue` - начальное значение и `onChange` - действие, которое будет выполняться после каждой установки свойства. + +* *distinctUntilChanged* - тоже самое, что и предыдущее расширение, только `onChange` будет выполняться лишь в том случае, когда свойство принимает новое значение не равное `null` и отличное от предыдущего. + +### Примеры + +```kotlin +class LinkViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + private val linkView: TextView = findViewById(R.id.item_link) + private val linkColor = getColor(R.color.global_action) + + fun bind(link: String) { + linkView.text = link + linkView.setOnRippleClickListener { context.openBrowser(link) } + } +} +``` + +### Подключение + +```gradle +implementation project(':kotlin-extensions') +```