五分鐘教你Android-Kotlin項目編寫

背景

之前就看到過Kotlin這一門語言,也有不少大神和愿意走在知識最前沿的哥哥姐姐們說這一門語言有多么多么的好,但是本人并沒有去了解他,直到前段時間Google大會直接說會支持Kotlin語言,所以我就抽出了一點時間準備學習一下,個人覺得到目前為止這個東西并不是什么剛需,有興趣可以學習,不想學影響也不是很大,好了關于這門語言有多好,有多叼,我就不多少了,想要了解的出門百度,這里給上源碼鏈接Kotlin-Android項目

插件安裝

環境搭建當然是第一步,也是最重要的一步,但是這個Kotlin的環境搭建卻很簡單,只要你安裝插件就行,個人是Android開發,所以就直接用Android Studio為例:
File—>Setting—>Plugins—>搜索Kotlin
然后點擊安裝,最后重啟Android Studio就行,我這個截圖是安裝過的


Kotlin_Plugins.png

創建項目

Android項目的創建我就不多說了,因為它是Android本身的不涉及到Kotlin語言的,所以與我們平時創建的規則一樣,不會的出門百度。

創建一個KotlinActivity

create_Activity.png

我們在創建的時候我們會發現,安裝插件之后就多了這兩個:
Kotlin File/Class 就是對應的Kotlin對象我們這次不用,就暫時不講。
Kotlin Activity 就是我們要創建的KotlinActivity,我們選擇它,編譯器還是會跟創建普通的Activity幫我們創建布局文件和在AndroidManifest.xml中注冊這個Activity。

Groud配置

個人在做第一個HelloWorld的時候就是卡在了這個地方,網上有些說創建KotlinActivity的時候編譯器會幫助我們在build.gradle里面生成需要的配置,但是說實話我當時它并沒有這么幫我干,那么我們怎么手動配置呢。
首先是項目最外面的build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext.kotlin_version = '1.1.2'
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

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

這個是我的完整的配置文件,其實大家只需要在根目錄加上最上面那句話

ext.kotlin_version = '1.1.2'

這里有一個問題,我們到底要寫什么版本號呢?我當時就遇到了這個肯,在網上拷貝了一個版本好結果怎么都運行不起來,其實這個版本號需要與我們安裝的Kotlin插件的版本號一致,那么我們怎么查看自己安裝的Kotlin版本號呢?
Tools—>Kotlin—>Config Kotlin Plugin Updates—>Check for updates now

kotlin_update.png

好了,接下來我們來配置一下需要使用Kotlin語言的module的build.gradle配置


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.zxf.kotlin"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
//    sourceSets {
//        main.java.srcDirs += 'src/main/kotlin'
//    }
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
}


這個是我的配置文件,很清晰,主要就是在根目錄最上層加上

buildscript {
  repositories {
      jcenter()
  }
  dependencies {
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
  }
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

接下來就是在dependencies 中引用kotlin

compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

好了配置的步驟到這就真的徹底結束了,接下來,我們看一下代碼。

擼代碼啦

我們先來看一下剛剛創建的KotlinActivity的代碼

package com.zxf.kotlin

import android.os.Bundle
import android.support.v7.app.AppCompatActivity

class KotlinActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kotlin)
    }
}

布局文件沒有任何變化,首先,我們定義兩個控件,一個TextView,一個Button并給它們設置上id

<?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:orientation="vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/helloWorld"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/open_next"/>
</LinearLayout>

接下來,就是在Activity里面獲取這兩個控件了,讓我們來看一下代碼:

        helloWorld.text = "hello world"
        open_next.text = "Open Next Activity"
        open_next.setOnClickListener { startActivity(Intent(KotlinActivity@this,SecondActivity::class.java)) }

這三句話就完成了給TextView設置文字和給Button設置文字和添加點擊事件,到這是不是發現,我擦真是超簡單,煩人的findviewbyid()終于不見了,一些沒有必要的new 和;也不需要了,簡直就是太干凈了。

總結

好了,這就完成了一個最簡單的Android項目,這里也附上源碼地址:
Kotlin-Android項目,我也會在后面個人的學習中不斷完善這個項目,歡迎大家評論和提意見,共同成長。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容