Android開發之探索Kotlin開發之路

知識點

1.Kotlin的簡介;

2.Kotlin和Java的關係;

3.Kotlin在as的開發環境配置;

4.Kotlin實例講解;

5. 新名詞記錄{Kotlin}

概述

在前段時間的Google io上面,Google突然發出大招–Kotlin成為Android開發的主力語言。一時間,全球的Android開發者都炸開鍋了。不少人都還是沒有怎麼聽過Kotlin是什麼東西的,面對Kotlin就蒙了。

Kotlin是什麼?

Kotlin 是一個基於 JVM 的新的編程語言,由 JetBrains 開發。

Kotlin可以編譯成Java字節碼,也可以編譯成JavaScript,方便在沒有JVM的設備上運行。

JetBrains,作為目前廣受歡迎的Java IDE IntelliJ 的提供商,在 Apache 許可下已經開源其Kotlin編程語言。

Kotlin 是JetBrains在2010年推出的基於 JVM 的新編程語言,其主要設計目標如下:

- 兼容Java。

- 比Java更安全,能夠靜態檢測常見的陷阱,如:引用空指針。

- 比Java更簡潔,通過支持變量類型推斷、高階函數(閉包)、構造函數、混合(mixins)和一級委託等來實現。

- 讓它比最成熟的競爭對手Scala語言更加簡單。

Google之所以寵幸Kotlin,除了上面的幾個優點之外,還有一個很大的可能,那就是Google一直和甲骨文之間的官司。因為甲骨文指控Google抄襲了Java的代碼,讓Google好不頭疼。所以才尋找一個更好的方法來解決這個途徑,Kotlin就在這時進入了Google的法眼了。

Java和Kotlin的關係

對於習慣了使用Java來開發Android應用的開發者,不用擔心這個問題。Java和Kotlin之間代碼是可以共存的,而且它們之間也可以相互調用。Google還提供了將Java代碼轉換成Kotlin代碼的功能。

總的來說,Java有的功能,Kotlin基本上都有。而且兩者之間的性能理論上是一樣的,可能有些地方Kotlin還要優於Java。

Kotlin開發環境配置

如果要使用Kotlin來開發應用,那麼應該用什麼IDE呢?當然還是Android studio啦,這可是Google的親兒子。

那麼在Android studio中如何使用Kotlin呢?

首先需要下載Kotlin插件。

在偏好設置中,找到“plugin”選擇,輸入“Kotlin”進行搜索,找到搜索出來的“Kotlin”,看到右邊的“install”按鈕,進行安裝即可。(友情提醒:這裡安裝很慢,需要翻牆才可以,你懂滴)

kotlin-android-extensions插件也是要安裝的,這個主要用來初始化空間,如果你不想再寫一大堆的findViewById()的代碼的話。

在項目的build文件的buildscript/dependencies下面加入如下代碼:

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2",因為安裝的插件是1.1.2版本的。

在APP模塊的build文件加入如下代碼

在頂部加入

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions',兩個插件引用。

在dependencies中加入compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.2"依賴,然後編譯即可。

Android開發之探索Kotlin開發之路

等編譯成功之後,就可以開始使用Kotlin進行編碼了。

Kotlin在Android studio編碼示例

首先我們看下如何建立一個Kotlin的activity文件,在編譯完成之後,我們可以看到在new Java類下面,多出了兩個選項,如下圖

Android開發之探索Kotlin開發之路

首先建立一個基類BaseKotlinActivity.kt,如下所示:

open class BaseKotlinActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

}

fun Context.toast(text: String) = Toast.makeText(this, text, Toast.LENGTH_SHORT).show()

}

分析上面的代碼,可以看到Kotlin是利用:分號進行了繼承,繼承的類後面需要帶一個括號。還有一點就是在class關鍵字前面,需要加入”open”,此類才能夠被繼承,以及重寫基類的方法。

在基類裡面,擴展了context類裡面的toast方法,只需要傳入一個string類型的內容,就可以toast,而且在全部的context中都是成立的,從而不用建立一個util來重寫toast。

建立一個KotlinActivity.kt

package com.yaojt.ui.kotlin

import android.os.Bundle

import android.support.v7.widget.LinearLayoutManager

import android.support.v7.widget.RecyclerView

import com.yaojt.R

import com.yaojt.sdk.java.utils.CommonLog

import kotlinx.android.synthetic.main.activity_kotlin.*

class KotlinActivity : BaseKotlinActivity() {

private val TAG = this.javaClass.simpleName

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

//設置視圖

setContentView(R.layout.activity_kotlin)

initView(1)

}

fun initView(arg1: Int) {

//find方法初始化控件

//var rv_list = findViewById(R.id.rv_list) as RecyclerView

//直接在佈局裡面的id進行操作

rv_list.layoutManager = LinearLayoutManager(this)

//直接將tv_name的text設置為this is a content

tv_name.text = "this is a content"

val result = collection()

for (book in result){

CommonLog.logInfo(TAG, "book.name : " + book.name + ", book.price : " + book.price +

", book.author : " + book.author)

}

toast("done")

}

/**

* 使用集合

*/

fun collection(): List<book>{/<book>

val books = listOf<book>(Book("yaojt", 11f, "jack"),/<book>

Book("c", 22f, "thomas"), Book("c++", 33f, "tom"), Book("java", 44f, "alic"))

//這裡使用了過濾,在{}裡面的是過濾的條件,而take(2),則表示只需要取得前面2個就行了

val result1 = books.filter{it.price > 11}.take(2)

return result1

}

}

在上面,主要展示了幾個知識點:

1. 繼承基類BaseKotlinActivity,可以調用基類裡面定義的toast方法;

2. 可以依據控件的id進行操作,如果在id緩存集合裡面沒有找到對應的id,那麼還是需要調用findViewById()來初始化控件的。

3. 數組的filter和take操作。

4. 調用Java方法,CommonLog.logInfo()輸出打印信息。

對應的activity_kotlin佈局代碼如下:

<linearlayout>

android:layout_width="match_parent"

android:orientation="vertical"

android:layout_height="match_parent">

<textview>

android:id="@+id/tv_name"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

<android.support.v7.widget.recyclerview>

android:id="@+id/rv_list"

android:layout_width="match_parent"

android:layout_height="match_parent" />

/<android.support.v7.widget.recyclerview>

/<textview>

/<linearlayout>

在佈局裡面需要不同的id,Kotlin才能很好的區分。

最後的運行結果如下圖所示:

Android開發之探索Kotlin開發之路

總結

首先認識了Kotlin,對此有了一個大概的認識。然後是如何在as裡面配置Kotlin開發環境,最後是Kotlin的使用教程。

Kotlin必將大熱,所以我們還是需要去看看Kotlin的知識的。但是也不用很害怕,畢竟Google給了一個很好的開發語言和很長的一段過渡時間。

Android開發之探索Kotlin開發之路

Android開發之探索Kotlin開發之路

Android開發之探索Kotlin開發之路

Android開發之探索Kotlin開發之路

Android開發之探索Kotlin開發之路

Android開發之探索Kotlin開發之路

關注我私信回覆【學習】獲取Android高階開發資料分享,高級UI、性能優化、架構師課程、

NDK、混合式開發(ReactNative+Weex)等Android高階開發資料免費分享。


分享到:


相關文章: