Kotlin — язык программирования с открытым исходным кодом от компании JetBrains, становится все более популярным среди Java-разработчиков. Совместимый с Java, он предлагает более богатый опыт разработки за счет своей современности, выразительности и лаконичности.
Если вы следите за альтернативными языками программирования для разработки под Android, Вы должны попробовать Kotlin. Он может быть использован вместе с Java в ваших Android-проектах.
В этом уроке я покажу вам как использовать Kotlin и плагины Kotlin в Android Studio.
Подготовка
Чтобы следовать вместе со мной, вы должны иметь:
— последняя версия Android Studio
— базовое понимания синтаксиса Kotlin
1. Установка плагинов Kotlin
В Android Studio выбираем Configure> Plugins.
На следующем экране нажимаем на кнопку Install JetBrains plugin… внизу.
Выбираем Kotlin Extensions For Android из списка и нажмите Install Plugin справа.
Так как плагин зависит от плагина Kotlin, студия справшивает можно ли установить его. Нажмите Yes для начала установки.
После завершения установки, перезапустите Android Studio для активации плагинов.
2. Создание Activity на Kotlin
В Android Studio нажмите правой кнопкой мыши на имени вашего пакета и выберите New > Kotlin File.
В диалоговом окне, введите имя новой Activity и выберите Class из выпадающего списка. Я назвал свой класс MainActivity.
После того, как класс был создан, вы увидите предупреждение о том, чтобы вы настроили модуль приложения для поддержки Kotlin.
В алерте нажмте на ссылку и во всплывающем окне нажмите OK для выбора значений по умолчанию.
Для настройки поддержки Kotlin в вашем проекте, плагин Kotlin сделает некоторые изменения в файле build.gradle. Примените изменения настроек нажатием на кнопку Sync Now сверху.
На этом шаге настройка проекта завершена. Вернитесь к вашему Kotlin-классу для начала кодинга.
3. Использование Kotlin
Для упрощения примера я покажу как создал Activity с одним единственным TextView, отображающим строку.
Убедитесь, что ваш класс является подклассом Activity и переопределен метод onCreate. Ваш класс должен выглядеть так:
package com.hathy.kotlinsample import android.app.Activity import android.os.Bundle public class MainActivity: Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } }
Создайте экземпляр класса TextView как локальную переменную с помощью ключевого слова val:
val myMessage = TextView(this)
Вызовите метод setText у TextView для установки текста и установите его как layout с помощью метода setContentView.
myMessage.setText("Hello") setContentView(myMessage)
Также как и Activity на Java, вам нужно объявить вашу Kotlin-Activity в AndroidManifest.xml. Вот так выглядит объявление Activity в манифесте:
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"> <category android:name="android.intent.category.LAUNCHER"> </intent-filter> </activity>
Теперь вы можете скомпилировать и запустить приложение на вашем Android-устройстве или эмуляторе. Хотя компилятор Kotlin немного медленнее, чем Java, вы вряд ли ощутите особую разницу во время сборки вашего проекта.
4. Использование расширения Android Kotlin
Для того, чтобы использовать плагин в вашем приложении добавьте в файл build.gradle зависимость org.jetbrains.kotlin:kotlin-android-extensions как указано ниже. Не забудьте также нажать кнопку Sync Now:
buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } }
С помощью этого расширения вы можете забыть про findViewById. Плагин все сделает за вас. Плагин сканирует XML-файл вашего лейаута, и по id виджетов создает в вашей Activity переменные такого же типа и с именем совпадающим с id виджета. Небольшой пример:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/myMessage"> </LinearLayout>
У нас есть TextView с id myMessage. Создайте Kotlin-активити и переопределите метод onCreate:
package com.hathy.kotlinsample import android.app.Activity import android.os.Bundle public class AnotherActivity: Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } }
Вызовите метод setContentView и передайте id вашего лейаута:
setContentView(R.layout.another_activity)
Вместо вызова findViewById вы можете импортировать ваш TextView и использовать его как обычную переменную:
import kotlinx.android.synthetic.another_activity.myMessage
Если вы хотите импортировать все виджеты, вместо myMessage нужно написать *:
import kotlinx.android.synthetic.another_activity.*
Теперь вы можете использовать TextView в вашей Activity:
myMessage.setText("Hello")
5. Конвертация Java в Kotlin
Вы можете использовать плагин Kotlin, для преобразования Java-классов классы Kotlin. Чтобы попробовать эту функцию , создайте новый Java-класс со следующей реализации. Это простая активити, которая селадывает два числа.
public class YetAnotherActivity extends Activity { private int a,b; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); a=10; b=20; Log.d("MESSAGE", "The sum is "+(a+b)); } }
Преобразуйте Java-класс в класс Kotlin, нажатием Control+Alt+Shift+J, или с помощью меню, выбрав Code> Convert Java File to Kotlin File.
После конвертации ваш класс будет выглядеть так:
public class YetAnotherActivity : Activity() { private var a: Int = 0 private var b: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) a = 10 b = 20 var sum = a + b Log.d("MESSAGE", "The sum is ${sum}") } }
Также вы можете заметить, что расширение файла поменялось с .java на .kt.
Видеоверсия урока
Заключение
В этом уроке мы научились использовать Kotlin в ваших Andoid-проектах. Java и Kotlin могут использоваться вместе в одном проекте. Если вы только изучаете Kotlin, то лучше использовать его постепенно.