Используем Kotlin в своем Android-проекте

wp-1456939516123.jpeg

Kotlin — язык программирования с открытым исходным кодом от компании JetBrains, становится все более популярным среди Java-разработчиков. Совместимый с Java, он предлагает более богатый опыт разработки за счет своей современности, выразительности и лаконичности.

Если вы следите за альтернативными языками программирования для разработки под Android, Вы должны попробовать Kotlin. Он может быть использован вместе с Java в ваших Android-проектах.



В этом уроке я покажу вам как использовать Kotlin и плагины Kotlin в Android Studio.

Подготовка

Чтобы следовать вместе со мной, вы должны иметь:

— последняя версия Android Studio
— базовое понимания синтаксиса Kotlin

1. Установка плагинов Kotlin

В Android Studio выбираем Configure > Plugins.

kot2a

На следующем экране нажимаем на кнопку Install JetBrains plugin… внизу.

kot3b

Выбираем Kotlin Extensions For Android из списка и нажмите Install Plugin справа.

kotB

Так как плагин зависит от плагина Kotlin, студия справшивает можно ли установить его. Нажмите Yes для начала установки.

kotC

После завершения установки, перезапустите Android Studio для активации плагинов.

2. Создание Activity на Kotlin

В Android Studio нажмите правой кнопкой мыши на имени вашего пакета и выберите New > Kotlin File.

kot5

В диалоговом окне, введите имя новой Activity и выберите Class из выпадающего списка. Я назвал свой класс MainActivity.

kot6

После того, как класс был создан, вы увидите предупреждение о том, чтобы вы настроили модуль приложения для поддержки Kotlin.

kot7

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

kot8

Для настройки поддержки Kotlin в вашем проекте, плагин Kotlin сделает некоторые изменения в файле build.gradle. Примените изменения настроек нажатием на кнопку Sync Now сверху.

kotAkot8

На этом шаге настройка проекта завершена. Вернитесь к вашему 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.

image

После конвертации ваш класс будет выглядеть так:

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, то лучше использовать его постепенно.

Видеоверсия урока: https://youtu.be/1t0k8CmyBrA

Источник: How to Use Kotlin in Your Android Projects

Комментарии:

комментарий

  1. Vovan Ответить

    Привет всем, заметил еще одно упущение касаемое кода, что касается производительности и потокозащищенности, строчку с переменной sum
    var sum = a + b
    луче заменить на final value sum
    val sum = a + b
    Вообще, всегда когда можно использовать иммутабл проперти — ее НУЖНО использовать.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *