Kotlin程式設計之AndroidStudio(包括3.0與2.x版本)配置與使用

新根發表於2017-05-22

Kotlin程式設計開發Android運用程式的相關介紹


image

Android Studio 3.0以下版本配置


這使用的Android Studio 2.3版本,因此,需要新增Kotlin外掛。

在Android Studio中新增Kotlin語言依賴包

kotlin 標準庫依賴:File–> Setting–>Plugins–>搜尋Kotlin–>安裝,如下所示:

這裡寫圖片描述

安裝完後,重啟Android Studiio。

原本的AndroidStudio 存Java語法專案轉成支援Kotlin語法的專案

以下幾步操作,AndroiStudio自動下載進行配置,以免手動配置出錯。

1. 將Java檔案轉換成kotlin檔案:

開啟Java檔案,然後點選Code–>Convert Java File to Kotlin

這裡寫圖片描述

2. 新增kotlin的配置:configue–>android Gralde:

這裡寫圖片描述

3. 選中新增的配置,這裡選擇當前包含Kotlin的專案中新增外掛

這裡寫圖片描述

4. 配置好後,在Project的Gradle中新增sync now,AndroidStudio將會自動下載配置

5. 配置好的Projcet的Gralde如下

這裡寫圖片描述

6. 配置好的module的Gradle如下

這裡寫圖片描述

解讀MainActivity中,Java轉成Kotlin後的程式碼

/**
 *  一個類繼承父類和實現介面的方式; class 類名 :超類名(),介面名
 */
class MainActivity : AppCompatActivity() {
    /**
     * override用於覆寫繼承父類或者實現介面中方法。
     *
     * fun 用於標識方法
     *
     * 引數形式: 引數名: 型別
     *
     *  ? 是用於指定可以為空物件
     *
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

執行效果如下

這裡寫圖片描述

Android Studio 3.0建立Kotlin專案


Android Studio 3.0及其以版本上是支援Kotlin開發的。

1. 下載和安裝Android Studio 3.0

Android Studio 3.0下載: 進入下載頁面

Android Studio預先版本是可以與電腦現有安裝的AndroidStudio版本共存 , 詳情請看多個AndroidStudio共存安裝教程.

2. 使用AndroidStudio建立Kotlin的專案

在AndroidStudio 中 ,在Welcom toAndroid Studio頁面中點選 Start new Android Studio project或者在原本工作區間中點選File–>New –>New Projcet 。接下來,在Creat New Projcet中,勾選上include Kotlin Support,最後點選Next一路走下去。

image

最後Kotlin檔案和Java檔案存放路徑相似,存放在src/main/java目錄下。

3. 在專案中新增Kotlin:

在File–>New –>在選單中進行選擇檔案型別,如下如圖所示:

image

如上圖所示嚮導進行操作後,在New Android Activity頁面中選擇Kotlin作為開發語言,然後一路next。

image

Android Studio是很強大的,還提供其他方式建立Kotlin檔案

點選Flie–>New –>Kotlin File/Class 建立一個基本檔案。在New Kotlin File/Class 彈窗中,輸入檔名,可以從多中Kind選擇一種型別。不必要擔心建立錯檔案型別,在編寫程式碼中宣告型別時候,檔案會自動切換到宣告所對應的型別。

修改Kotlin所存放的路徑

預設情況下,Kotlin檔案存放在src/main/java/,與java在同一個資料夾下。若是需要隔開java檔案和Kotlin檔案,指定一個專門存放Kotlin檔案的資料夾。例如,在src/main路徑下建立一個kotlin目錄,然後需要在Gralde指定sourceSets配置:

android {
   sourceSets {
       main.java.srcDirs += 'src/main/kotlin'
   }
}

3. 轉換Java程式碼到Kotlin程式碼

在專案中,開啟一個java檔案,點選最上面視窗中Code–>Convert Java File to Kotlin File

一種方式是,在Kotlin檔案中拷貝Java程式碼,然後出現提示,將convert the code toKotlin,勾選中選擇下次不提示該彈窗,這樣也實現Java程式碼轉成Kotlin。

image

4. 在Kotlin語言中使用Android API

Kotlin與Java語言是互通的,互動使用。因此,Kotlin呼叫Android API與Java呼叫方式類似。

這裡列舉幾個案例,進行比對(來源官方)

編寫Activity:

  • Java:
public class MyActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
  }
}
  • Kotlin:
class MyActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity)
  }
}

為View設定點選事件

  • Java:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    ...
  }
});
  • Kotlin:
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
  ...
}

建立item點選事件

  • Java:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
    = new BottomNavigationView.OnNavigationItemSelectedListener() {
  @Override
  public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
      case R.id.navigation_home:
        mTextMessage.setText(R.string.title_home);
        return true;
      case R.id.navigation_dashboard:
        mTextMessage.setText(R.string.title_dashboard);
        return true;
    }
    return false;
  }
};
  • Kotlin:
private val mOnNavigationItemSelectedListener
    = BottomNavigationView.OnNavigationItemSelectedListener { item ->
  when (item.itemId) {
    R.id.navigation_home -> {
      mTextMessage.setText(R.string.title_home)
      return@OnNavigationItemSelectedListener true
    }
    R.id.navigation_dashboard -> {
      mTextMessage.setText(R.string.title_dashboard)
      return@OnNavigationItemSelectedListener true
    }
 }
 false
}

相關文章