Kotlin для Android: приложение за 30 минут!

В этом руководстве мы перепишем предыдущий проект, созданный на Java, используя Kotlin. Это позволит сравнить код на двух языках и получить практический опыт разработки на Kotlin. Kotlin — отдельный язык программирования; перед началом работы рекомендуется изучить бесплатный курс по нему (ссылка на курс опущена). Предполагается, что Android Studio уже установлена.

Создание проекта

  1. Откройте Android Studio.
  2. Нажмите «Создать новый проект».
  3. Выберите шаблон «Empty Activity».
  4. Укажите название проекта, его расположение и минимальную версию Android.
  5. Важно: смените основной язык программирования на Kotlin.
  6. Нажмите «Финиш» и дождитесь завершения сборки проекта (это может занять несколько минут).

Дизайн приложения

Разработка дизайна в Android Studio ведется с использованием XML. Независимо от используемого языка программирования (Java или Kotlin), код дизайна остается неизменным. В этом уроке мы скопируем дизайн из предыдущего проекта (ссылка на готовый проект опущена). Скопируйте файлы activity_main.xml, strings.xml и colors.xml, заменив соответствующие файлы в новом проекте. Не забудьте изменить основную тему приложения в файле с темами. Для корректного отображения шрифта, выберите любой текстовый объект, найдите параметр fontFamily и добавьте шрифт Montserrat Bold.

Функциональность приложения

В основном классе (с расширением .kt) создадим поля, ссылающиеся на объекты дизайна. Создание полей в Kotlin похоже на Java, но с небольшими отличиями:

  • Не нужно указывать тип данных вначале. Достаточно ключевого слова var.
  • После имени поля можно добавить ?, чтобы указать, что поле может принимать значение null.
var userField: EditText? = null
var mainButton: Button? = null
var resultInfo: TextView? = null

Внутри метода onCreate (который срабатывает при запуске Activity) присвоим значения этим полям:

userField = findViewById(R.id.user_field)
mainButton = findViewById(R.id.main_button)
resultInfo = findViewById(R.id.result_info)

Обратите внимание: точки с запятой в конце строк в Kotlin не нужны.

Для обработки события нажатия кнопки, используем setOnClickListener:

mainButton?.setOnClickListener {
    // Обработка события
}

Внутри обработчика события, получим текст из userField, проверим, пустая ли строка, и если да, покажем всплывающее окно:

val city = userField?.text?.toString()?.trim() ?: ""
if (city.isEmpty()) {
    Toast.makeText(this, "Введите город", Toast.LENGTH_SHORT).show()
}

Работа с API OpenWeatherMap

Для получения данных о погоде, будем использовать API OpenWeatherMap (ссылка на сайт опущена). Вам потребуется зарегистрироваться и получить ключ API. Ссылка на API с подстановкой города и ключа будет выглядеть примерно так: (Замените <ключ> и <город> на свои значения).

val url = "https://api.openweathermap.org/data/2.5/weather?q=$city&appid=<ключ>&units=metric&lang=ru"

Перед использованием API, необходимо добавить необходимые разрешения в манифест:

<uses-permission android_name="android.permission.INTERNET" />
<uses-permission android_name="android.permission.ACCESS_NETWORK_STATE" />

Для асинхронного выполнения запроса, воспользуемся библиотекой Ktor:

  1. Добавьте зависимость в build.gradle:
implementation("io.ktor:ktor-client-core:0.9")
  1. Синхронизируйте проект.
  2. Используйте client.get для выполнения запроса:
val apiResponse = runBlocking {
    client.get(url) {
        // ... обработка ответа
    }
}
  1. Обработайте JSON-ответ. Используйте класс JSONObject для парсинга JSON и получения нужных данных (температуры и описания погоды).
val jsonObject = JSONObject(apiResponse.readText())
val description = jsonObject.getJSONArray("weather").getJSONObject(0).getString("description")
val temperature = jsonObject.getJSONObject("main").getString("temp")
  1. Выведите результаты в resultInfo.

Мы создали Android приложение на Kotlin, которое получает данные о погоде с API OpenWeatherMap. Kotlin упрощает многие аспекты разработки по сравнению с Java, особенно асинхронные операции. Выбор языка программирования зависит от ваших предпочтений и требований проекта. Оба языка (Java и Kotlin) отлично подходят для Android-разработки.

Что будем искать? Например,программа