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

背景

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

插件安裝

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


Kotlin_Plugins.png

創(chuàng)建項目

Android項目的創(chuàng)建我就不多說了,因為它是Android本身的不涉及到Kotlin語言的茅姜,所以與我們平時創(chuàng)建的規(guī)則一樣闪朱,不會的出門百度。

創(chuàng)建一個KotlinActivity

create_Activity.png

我們在創(chuàng)建的時候我們會發(fā)現(xiàn)钻洒,安裝插件之后就多了這兩個:
Kotlin File/Class 就是對應(yīng)的Kotlin對象我們這次不用奋姿,就暫時不講。
Kotlin Activity 就是我們要創(chuàng)建的KotlinActivity素标,我們選擇它称诗,編譯器還是會跟創(chuàng)建普通的Activity幫我們創(chuàng)建布局文件和在AndroidManifest.xml中注冊這個Activity。

Groud配置

個人在做第一個HelloWorld的時候就是卡在了這個地方头遭,網(wǎng)上有些說創(chuàng)建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'

這里有一個問題,我們到底要寫什么版本號呢享潜?我當時就遇到了這個肯困鸥,在網(wǎng)上拷貝了一個版本好結(jié)果怎么都運行不起來,其實這個版本號需要與我們安裝的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"

好了配置的步驟到這就真的徹底結(jié)束了鸟废,接下來,我們看一下代碼姑荷。

擼代碼啦

我們先來看一下剛剛創(chuàng)建的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并給它們設(shè)置上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設(shè)置文字和給Button設(shè)置文字和添加點擊事件计露,到這是不是發(fā)現(xiàn),我擦真是超簡單憎乙,煩人的findviewbyid()終于不見了票罐,一些沒有必要的new 和;也不需要了泞边,簡直就是太干凈了胶坠。

總結(jié)

好了,這就完成了一個最簡單的Android項目繁堡,這里也附上源碼地址:
Kotlin-Android項目,我也會在后面?zhèn)€人的學(xué)習(xí)中不斷完善這個項目沈善,歡迎大家評論和提意見,共同成長椭蹄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绳矩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子翼馆,更是在濱河造成了極大的恐慌,老刑警劉巖严沥,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件消玄,死亡現(xiàn)場離奇詭異,居然都是意外死亡受扳,警方通過查閱死者的電腦和手機兔跌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門坟桅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事匿又。” “怎么了裕偿?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵嘿棘,是天一觀的道長旭绒。 經(jīng)常有香客問我,道長重父,這世上最難降的妖魔是什么忽匈? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任丹允,我火速辦了婚禮,結(jié)果婚禮上折柠,老公的妹妹穿的比我還像新娘批狐。我一直安慰自己,他們只是感情好缘眶,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布巷懈。 她就那樣靜靜地躺著,像睡著了一般凑保。 火紅的嫁衣襯著肌膚如雪涌攻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天芝此,我揣著相機與錄音婚苹,去河邊找鬼鸵膏。 笑死,一個胖子當著我的面吹牛廓译,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播责循,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼院仿,長吁一口氣:“原來是場噩夢啊……” “哼歹垫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颠放,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暮芭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辕宏,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年凄鼻,在試婚紗的時候發(fā)現(xiàn)自己被綠了块蚌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膘格。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纱控,靈堂內(nèi)的尸體忽然破棺而出政敢,到底是詐尸還是另有隱情胚迫,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布褪尝,位于F島的核電站,受9級特大地震影響河哑,放射性物質(zhì)發(fā)生泄漏龟虎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一佳吞、第九天 我趴在偏房一處隱蔽的房頂上張望底扳。 院中可真熱鬧,春花似錦衷模、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至届囚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泥耀,已是汗流浹背蛔添。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工迎瞧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缝裁。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓足绅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親粹污。 傳聞我的和親對象是個殘疾皇子首量,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容