В этом руководстве мы перепишем предыдущий проект, созданный на Java, используя Kotlin. Это позволит сравнить код на двух языках и получить практический опыт разработки на Kotlin. Kotlin — отдельный язык программирования; перед началом работы рекомендуется изучить бесплатный курс по нему (ссылка на курс опущена). Предполагается, что Android Studio уже установлена.
Создание проекта
- Откройте Android Studio.
- Нажмите «Создать новый проект».
- Выберите шаблон «Empty Activity».
- Укажите название проекта, его расположение и минимальную версию Android.
- Важно: смените основной язык программирования на Kotlin.
- Нажмите «Финиш» и дождитесь завершения сборки проекта (это может занять несколько минут).
Дизайн приложения
Разработка дизайна в 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:
- Добавьте зависимость в build.gradle:
implementation("io.ktor:ktor-client-core:0.9")
- Синхронизируйте проект.
- Используйте client.get для выполнения запроса:
val apiResponse = runBlocking {
client.get(url) {
// ... обработка ответа
}
}
- Обработайте JSON-ответ. Используйте класс JSONObject для парсинга JSON и получения нужных данных (температуры и описания погоды).
val jsonObject = JSONObject(apiResponse.readText())
val description = jsonObject.getJSONArray("weather").getJSONObject(0).getString("description")
val temperature = jsonObject.getJSONObject("main").getString("temp")
- Выведите результаты в resultInfo.
Мы создали Android приложение на Kotlin, которое получает данные о погоде с API OpenWeatherMap. Kotlin упрощает многие аспекты разработки по сравнению с Java, особенно асинхронные операции. Выбор языка программирования зависит от ваших предпочтений и требований проекта. Оба языка (Java и Kotlin) отлично подходят для Android-разработки.