Kotlin編程之路——如何在Android studio環境使用kotlin開發

前言

前面說了那么多,只是和kotlin有了一個大概的認知而已,如果沒有經常去使用,久而久之就會忘記,所以是時候和Kotlin打交道的時候了,前面只是介紹Kotlin如何如何的,沒有一個示例源碼項目來為解剖kotlin的真面目,下面就開始為大家講解如何在Android studio環境使用kotlin開發。

本篇文章是基于Android studio環境下開發的一個小小示例demo,主要是拋磚引玉,至于修行,還是得看個人。

環境配置

在Android studio環境開發,需要安裝kotlin的插件,如果沒有安裝的請先進行安裝
安裝方式路徑Android studio -> preferences... ->Plugins -> Install JetBrains plugin...
然后在界面上輸入Kotlin,這個時候在右邊就會出現安裝按鈕,由于我已經安裝過了,沒有安裝的童鞋就選擇最新版本進行安裝就可以了,安裝完成后點擊restart,這樣我們在Android studio上就可以使用kotlin開發了


image.png

正式和Kotlin打招呼-- Hello Kotlin

首先創建項目的時候還是和之前創建Android項目一樣就可以了,然后會有一個神奇的東西,自動幫你轉換成kotlin代碼

未轉換前的代碼,這里直接上圖片
image.png
轉換后的代碼

我們找到code ->Convert Java File to Kotlin File 然后直接選擇就可以了

image.png

哈哈,有沒有發現神奇的事情發生了,通過轉換,這個代碼看著怎么有點不適應啊,怎么感覺像是swift的代碼風格了。至此,kotlin的環境已經搭建完成了,什么,這樣就搭建完成了?是的,就是這么簡單,一個插件就能幫你搞定。
接下來我就寫個入門級的程序,廢話不多說,直接上代碼。
我們發現,使用kotlin之后,再也不用擔心我們xml里面的控件ID沒有綁定而直接使用后拋異常的情況了,是的,你沒有看錯,也沒有聽錯,用kotlin再也不用綁定我們那些控件ID了,不過我們需要做一個動作,那就是引入以下插件,

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
image.png

如果你在Android studio里面沒有設置自動導包,那就需要手動導包了

import kotlinx.android.synthetic.main.activity_main.*

然后就可以看到神奇的效果了,xml布局文件的ID可以直接調用并運行

image.png

那如何新建一個Kotlin類呢,來來來,看這里

image.png

假設我們寫一個User的Kotlin文件,當然你也可以寫成一個Kotlin的class,這里我是寫一個User的文件,然后在里面創建一個Users對象。

image.png

看到這里,有沒有覺得很奇怪,居然可以在Kotlin文件里面創建一個對象。

那在Kotlin里面是怎么new 一個對象的呢,看這里:

//聲明一個對象,這個就跟我們使用Java new 一個對象一樣 Java里面是Users users = new Users("小明");
  val users = Users("小明");

咦,有沒有發現,Kotlin聲明一個對象和Java區別這么大,以前人們總是調戲Java程序員沒有對象怎么辦,那就自己new 一個對象咯。現在可好,使用Kotlin之后,想new都沒得new了,這里應該悲哀一下,因為沒辦法new對象了。

下面用兩個EditText控件做一個簡單的加法運算

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="55dp"
        android:gravity="center">

        <EditText
            android:id="@+id/input_edit_number_one"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="5" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="+" />

        <EditText
            android:id="@+id/input_edit_number_two"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="5" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="=" />

        <TextView
            android:id="@+id/result"
            android:layout_marginLeft="15dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="10" />
    </LinearLayout>

然后在使用EditText賦值變量的時候發現,居然不能這樣子寫,不能直接使用text屬性賦值,而且還可以發現EditText屬性沒有getText()的方法了。


//這樣子賦值是會報錯的
input_edit_number_one.text = " 5 "

//我們只能這樣子賦值,然后在做一次賦值后的轉換
input_edit_number_one.setText("5");

下面直接給出兩個數相加的代碼示例

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

        //聲明一個對象,這個就跟我們使用Java new 一個對象一樣 Java里面是Users users = new Users("小明");
        val users = Users("小明");

        author.text = users.name;

        input_edit_number_one.setText("5");

        input_edit_number_two.setText("5");

        val number1: String? = input_edit_number_one.text.toString();

        val number2: String? = input_edit_number_two.text.toString();

        //Button 的點擊事件
        equalTo.setOnClickListener {

            val result1 = calculatetwo(number1!!.toInt(), number2!!.toInt());

            result.text = result1.toString();
        }

        //也可以調用calculatetwo函數
        //val result2 = calculate(number1!!.toInt(), number2!!.toInt());

        //result.text = result2.toString();

    }

   /**
     * 計算兩個數字相加
     */
    fun calculate(a: Int, b: Int): Int {
        return a + b;
    }

    /**
     * 計算兩個數字相加
     */
    fun calculatetwo(a: Int, b: Int): Int = a + b;

回顧一下今天所講的內容,

  • 如何在Android studio環境下搭建Kotlin開發環境
  • 如何創建一個Kotlin文件,然后怎么聲明一個對象,如何使用一個對象
  • 通過引入一個插件,所有的控件ID都不需要進行綁定就可以調用
  • EditText 控件的一些相關知識
  • 通過一個簡單的函數,了解到了Kotlin的函數和Java的不同之處

好了,今天就先講這么多,通過以上幾點,我們對Kotlin的認知也加深了很多,如果文章中有什么錯誤的地方,歡迎丟磚,大家一起學習,一起進步,謝謝大家!

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

推薦閱讀更多精彩內容