溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Kotlin在Android工程中的應(yīng)用詳解

發(fā)布時(shí)間:2020-10-04 15:23:16 來源:腳本之家 閱讀:175 作者:asce1885 欄目:移動(dòng)開發(fā)

Kotlin在Android工程中的應(yīng)用

原文鏈接

簡(jiǎn)介

Kotlin是由JetBrains設(shè)計(jì)的開放源碼的編程語言,它正在Java開發(fā)者中變得越來越流行。Kotlin通常被吹捧為Java的繼承者,相比較Java而言,Kotlin提供更為豐富的開發(fā)經(jīng)驗(yàn),因?yàn)樗F(xiàn)代,更具表現(xiàn)力和更簡(jiǎn)介。

如果你在尋求Android開發(fā)的可替代編程語言,那么應(yīng)該試一下Kotlin。使用Kotlin,你可以很容易的在Android工程中替代Java或者與Java混合使用。

本文接下來將介紹在Android Studio工程中如何使用Kotlin和Kotlin插件。

前置條件

繼續(xù)本文之前,你首先需要完成如下兩件事情:

將你的Andoid Studio更新到最新版本理解Kotlin的基本語法

如果你不熟悉Kotlin編程語言的話,建議先閱讀Kotlin指南中的開始章節(jié)。

1. 安裝Kotlin插件

在Android Studio的快速開始菜單中,選擇Configure>Plugins:

Kotlin在Android工程中的應(yīng)用詳解

在打開的頁(yè)面中,點(diǎn)擊底部的Install JetBrains plugin...:

Kotlin在Android工程中的應(yīng)用詳解

在插件列表中選擇或者搜索Kotlin Extensions For Android并點(diǎn)擊右邊窗口的Install Plugin按鈕:

Kotlin在Android工程中的應(yīng)用詳解

由于這個(gè)擴(kuò)展插件依賴于Kotlin插件,因此會(huì)彈出一個(gè)對(duì)話框提示我們同時(shí)去下載它,點(diǎn)擊Yes按鈕開始插件的下載:

Kotlin在Android工程中的應(yīng)用詳解

當(dāng)下載安裝完成之后,重啟Android Studio就可以激活插件了。

2. 創(chuàng)建Kotlin Activity

在Android Studio中,右鍵單擊工程包名在彈出的菜單中選擇New>Kotlin File:

Kotlin在Android工程中的應(yīng)用詳解

在彈出的對(duì)話框中,輸入Activity的名字并在類型下拉列表中選擇Class。我們把名字命名為MainActivity:

Kotlin在Android工程中的應(yīng)用詳解

當(dāng)類被創(chuàng)建出來后,你將會(huì)看到一個(gè)警告,提示你配置app模塊來支持Kotlin:

Kotlin在Android工程中的應(yīng)用詳解

單擊警告提示條的鏈接,在彈出的對(duì)話框中點(diǎn)擊OK按鈕選擇默認(rèn)的Kotlin插件版本即可:

Kotlin在Android工程中的應(yīng)用詳解

為了配置你的工程支持Kotlin,Kotlin插件修改了build.gradle文件。點(diǎn)擊Sync Now按鈕就可以應(yīng)用這些改動(dòng)了:

Kotlin在Android工程中的應(yīng)用詳解

到這里,工程的配置完成了。讓我們回到剛才創(chuàng)建的Kotlin類來開始Kotlin的編程吧。

3. 使用Kotlin

為了保持例子的簡(jiǎn)單,我們將展示如何創(chuàng)建一個(gè)Activity,它包含一個(gè)用于顯示String字符串的TextView。

確保你的類繼承自Activity,并重寫其onCreate函數(shù)。當(dāng)然,你要使用Kotlin的方式實(shí)現(xiàn)。如果你還不熟悉Kotlin,建議通過快捷鍵Control+O來激活A(yù)ndroid Studio的代碼生成功能,從而得到正確的函數(shù)簽名:

Kotlin在Android工程中的應(yīng)用詳解

生成之后,我們的類應(yīng)該如下所示:

package com.hathy.kotlinsample

import android.app.Activity
import android.os.Bundle

public class MainActivity: Activity() {
 override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
 }
}

使用val關(guān)鍵字創(chuàng)建TextView的一個(gè)只讀實(shí)例:

val myMessage = TextView(this)

調(diào)用TextView的setText函數(shù)設(shè)置要顯示的字符串,接著調(diào)用setContentView將TextView設(shè)置給它:

myMessage.setText("Hello")
setContentView(myMessage)

就像在Java Activity中,你也需要在AndroidManifest.xml文件中聲明Kotlin Activity,以便讓Android系統(tǒng)識(shí)別到它。假如這是你工程中唯一的Activity,那么manifest文件看起來如下所示:

<activity android:name=".MainActivity">
 <intent-filter>
  <action android:name="android.intent.action.MAIN"/>
  <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>
</activity>

現(xiàn)在你可以在你的Android設(shè)備或者模擬器上運(yùn)行這個(gè)app了。雖然Kotlin編譯器比Java編譯器稍微慢一點(diǎn),但你可能察覺不到編譯時(shí)間的顯著變化。

4. 使用Kotlin的Android擴(kuò)展插件

Kotlin的Android擴(kuò)展插件使得開發(fā)者可以像對(duì)待Activity屬性一樣對(duì)待定義在Activity的XML布局文件中的組件。也就是說,如果使用這個(gè)插件,你將不再需要調(diào)用findViewById。這些屬性因此被稱為合成屬性(synthetic properties)。

要在項(xiàng)目中使用這個(gè)特性,需要在app模塊的build.gradle文件中加入org.jetbrains.kotlin:kotlin-android-extensions作為構(gòu)建腳本依賴。不要忘了點(diǎn)擊Sync Now按鈕來同步這個(gè)改變到工程中:

buildscript {
 dependencies {
  classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
 }
}

現(xiàn)在讓我們創(chuàng)建一個(gè)和前面步驟創(chuàng)建的類似的Activity,但是使用布局XML文件來定義TextView。創(chuàng)建一個(gè)布局XML文件并命名為another_activity.xml。在這個(gè)文件中,定義TextView,id為myMessage:

<?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>

新建另一個(gè)Kotlin類AnotherActivity,繼承自Activity并重寫onCreate函數(shù),實(shí)現(xiàn)如下所示:

package com.hathy.kotlinsample

import android.app.Activity
import android.os.Bundle

public class AnotherActivity: Activity() {

 override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
 }
}

在onCreate函數(shù)中調(diào)用setContentView并把剛才創(chuàng)建的布局XML文件設(shè)置給它:

setContentView(R.layout.another_activity)

現(xiàn)在,你可以使用下面代碼片段導(dǎo)入TextView,而不是使用findViewById的方式:

import kotlinx.android.synthetic.another_activity.myMessage

如果布局文件中存在其他的組件,你可以使用如下語句來一次性全部導(dǎo)入:

import kotlinx.android.synthetic.another_activity.*

現(xiàn)在你可以通過使用id來訪問TextView,就像該TextView是Activity類的一個(gè)屬性一樣。例如,修改TextView顯示的字符串:

myMessage.setText("Hello")

5. 將Java類轉(zhuǎn)換為Kotlin

我們可以使用Kotlin插件將現(xiàn)存的Java類轉(zhuǎn)換成Kotlin類。為了嘗試這個(gè)特性,首先創(chuàng)建如下所示的Java類,它是一個(gè)打印兩個(gè)整數(shù)之和的簡(jiǎn)單的Activity:

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));
 }
}

使用快捷鍵Control+Alt+Shift+J,或者選擇菜單Code>Convert Java File to Kotlin File:

Kotlin在Android工程中的應(yīng)用詳解

轉(zhuǎn)換后的Kotlin類如下所示:

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
  Log.d("MESSAGE", "The sum is " + (a + b))
 }
}

除了文件內(nèi)容改變之外,文件的擴(kuò)展名也從.java變?yōu)榱?kt。

總結(jié)

本文我們通過在Android Studio中安裝Kotlin插件和Kotlin Android擴(kuò)展插件學(xué)到了如何在Android工程中使用Kotlin。由于Kotlin和Java在很大程度上可互操作,如果你還在學(xué)習(xí)Kotlin,那么最好是逐步在你的Android項(xiàng)目中應(yīng)用它。

為了學(xué)習(xí)更多的Kotlin相關(guān)知識(shí),我建議瀏覽Kotlin指南。開始章節(jié)將會(huì)幫助你盡快熟悉這門新語言。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI