1. 程式人生 > >Kotlin初體驗(一)-引入Android Studio

Kotlin初體驗(一)-引入Android Studio

Kotlin問世於2011年,直到近兩年被JetBrains,Google等公司扶持下,才被逐漸重視起來。尤其是2017年5月份谷歌宣佈把Kotlin作為Android的官方開發語言,緊接著10月份Android Studio3.0正式集成了Kotlin開發環境,11月份更完善的Kotlin1.2版正式釋出。儘管Java由來已久,根深葉茂,但作為Android開發人員,儘快瞭解Kotlin是大勢所趨。Kotlin的各種優點多如牛毛,簡潔的就像Python一樣,更健壯,無縫相容Java,函數語言程式設計,不多說了,直接看看怎麼使用吧。

一、開啟Android Studio 3.0+,新建一個Android專案,就像你從來沒聽過Kotlin時候 一樣。

來到MainActivity.java頁面,File-Setting-Plugins,輸入搜尋Kotlin,Install,Restart Android Studio,我一般都是Ctrl+Alt+S,開啟Setting的。安裝後就是下圖這樣的。重點關注Version:1.151-release-Studio3.0-1,一會兒還要用。

好上面就是第一步,安裝外掛。

二、匯入Kotlin的核心庫及其擴充套件庫Anko庫

1.在專案根目錄下的(project)build.gradle檔案中指定kotlin外掛的版本及路徑

Anko 是一個可以讓安卓應用開發更加高效和簡單的依賴庫,它使用了更簡潔,可讀性更高的程式碼方式來開發安卓應用程式,Anko包含了如下部分:

  • Anko Commons: 操作Intents,dialogs和日誌等等的輕量級依賴包
  • Anko Layouts: 一個更加快速 安全的安卓動態佈局開發包(目測目前只需要Adroid Extansions開發包就可以替代該包)
  • Anko SQLite: 資料庫操作包
  • Anko Coroutines: utilities based on the kotlinx.coroutines library. 
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    //手動新增以下兩行,其中1.1.51摘自Setting-Plugin-Kotlin:Version: 1.1.51-release-Studio3.0-1
    ext.kotlin_version = "1.1.51"
    ext.anko_version = "0.9"

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'

        //手動新增以下兩行
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"

    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2、在app的build.gradle檔案中將kotlin外掛編譯進來

apply plugin: 'com.android.application'
//新增外掛
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
    compileSdkVersion 27
   ...
   
}

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "org.jetbrains.anko:anko-common:$anko_version"

   ...
}

三、試一把

回到MainActivity.java頁面,點選Code-Covert Java File to  Kotlin File

嚯!敢教日月換新天

佈局檔案可以寫個Button,TextView試試

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    android:orientation="vertical">

    <Button
        android:id="@+id/btnClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</LinearLayout>

然後回到.kt檔案

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_my_kotlin.*//引入控制元件變數自動對映功能
import org.jetbrains.anko.toast

class MyKotlinActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my_kotlin)
        btnClick.setOnClickListener {
            textView.text = "點選後文本變化"
            toast("您點選了一下下哈")
        }
    }
}

首先import kotlinx.android.synthetic.main.activity_my_kotlin.*是為了引入控制元件變數自動對映功能,從此再也不用findViewById,id就能直接拿來當控制元件用;

Button監聽也被簡潔到令人髮指,莫不是lambda表示式的騷操作。

textView等控制元件的set/getText()方法也簡寫成了text,說好的get/set體現我面向物件特性-封裝呢,就這樣措不及防的被簡潔了;

toast()和longToast() 取代了Toast.makeText(this, "", Toast.LENGTH_SHORT/LONG).show();老大再也不用擔心我Toast忘了寫show()的尷尬症了。這其實是Anko庫作為Android增強庫的對程式碼的簡化操作。

。。。