02_kotlin_Hello World

一侈贷、環(huán)境配置

1.Android Studio 3.0及以上版本等脂,新創(chuàng)建kotlin工程,或者新建kotlin文件時(shí)搏屑,gradle會(huì)自動(dòng)配置好
2.Android Studio 3.0以下版本,需要手動(dòng)添加相關(guān)依賴

(1)kotlin plugin


添加對應(yīng)的插件

(2)工程gradle文件

buildscript {
    ext.kotlin_version = '1.3.20'
    repositories {
        google()
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

(3)模塊gradle文件

apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-android-extensions' 
...
dependencies {
    ...
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

二辣恋、Hello World

1.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        android:orientation="vertical">
    <TextView
            android:gravity="center"
            android:id="@+id/tv_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    <Button
            android:text="顯示Toast"
            android:layout_marginTop="20dp"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btn_toast"/>
</LinearLayout>

(1)簡單的布局伟骨,記住TextView和Button的id

2.代碼文件
class MainActivity : AppCompatActivity() {  // 1撵摆,2害晦,3
    override fun onCreate(savedInstanceState: Bundle?) { // 4暑中,5
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tv_title.text = "Hello World!" // 6
        btn_toast.setOnClickListener(object :View.OnClickListener{ // 7
            override fun onClick(p0: View?) {
                Toast.makeText(this@MainActivity,"我是toast" // 8
                    ,Toast.LENGTH_SHORT).show()
            }
        })
    }
}

(1)繼承的寫法鳄逾,由extends 變?yōu)?strong>:
(2)實(shí)際上,實(shí)現(xiàn)接口也由implements變?yōu)?strong>:
(3)AppCompatActivity()雕凹,表示繼承時(shí)政冻,調(diào)用父類的構(gòu)造器。類似java的父類委托機(jī)制
(4)override fun明场,表示覆蓋父類的函數(shù),override 不再以注解的方式修飾逼泣,kotlin聲明函數(shù)用fun修飾
(5)savedInstanceState: Bundle? 在kotlin中舟舒,變量聲明都是(名稱:類型),秃励?表示該變量可以為null,這個(gè)是kotlin的null安全機(jī)制
(6)tv_title.text莺治,無需使用findViewById谣旁,直接使用id即可訪問對應(yīng)的TextView(btn_toast同理)。setText() 變?yōu)閠ext砌们,kotlin通過點(diǎn)語法訪問成員變量搁进,實(shí)際調(diào)用的就是對應(yīng)的setter和getter方法
(7)點(diǎn)擊事件,匿名內(nèi)部類實(shí)現(xiàn)方式饼问,用object修飾
(8)this@MainActivity,無法直接使用MaintActivity.this
(9)你沒注意到峻堰,行末尾的;(分號結(jié)束符)已經(jīng)不需要了

三捐名、多種點(diǎn)擊事件寫法

1.匿名內(nèi)部類(如上述寫法)
2.onClick屬性綁定點(diǎn)擊函數(shù)

(1)布局文件

    <Button
            android:text="顯示Toast"
            android:layout_marginTop="20dp"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="showToastMethod"/>

(2)代碼文件

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
       
    }
    fun showToastMethod(view:View){
        Toast.makeText(view.context,"我是Toast",Toast.LENGTH_SHORT).show()
    }
}
3.Activity實(shí)現(xiàn)點(diǎn)擊接口
class MainActivity : AppCompatActivity(),View.OnClickListener {
    override fun onClick(p0: View?) {
        if(p0?.id == btn_toast.id) 
        {
            Toast.makeText(this@MainActivity,"我是toast"
                ,Toast.LENGTH_SHORT).show()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btn_toast.setOnClickListener(this)
    }
}
4.內(nèi)部類實(shí)現(xiàn)點(diǎn)擊接口
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btn_toast.setOnClickListener(ToastBtnListener())
    }
    // inner 修飾表示這是一個(gè)非靜態(tài)內(nèi)部類
    // 沒有inner修飾镶蹋,表示這是一個(gè)靜態(tài)內(nèi)部類,kotlin稱之為嵌套類
    inner class ToastBtnListener :View.OnClickListener{
        override fun onClick(p0: View?) {
            Toast.makeText(p0?.context,"我是toast"
                ,Toast.LENGTH_SHORT).show()
        }
    }
}
5.Lambda表達(dá)式
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btn_toast.setOnClickListener{
            Toast.makeText(this@MainActivity, "我是Toast"
                , Toast.LENGTH_SHORT).show()
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淆两,一起剝皮案震驚了整個(gè)濱河市拂酣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踱葛,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甥材,死亡現(xiàn)場離奇詭異性含,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)商蕴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苛谷,“玉大人格郁,你說我怎么就攤上這事±椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵自沧,是天一觀的道長。 經(jīng)常有香客問我拇厢,道長,這世上最難降的妖魔是什么旺嬉? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任邪媳,我火速辦了婚禮,結(jié)果婚禮上雨效,老公的妹妹穿的比我還像新娘。我一直安慰自己徽龟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布据悔。 她就那樣靜靜地躺著耘沼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菠隆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天骇径,我揣著相機(jī)與錄音者春,去河邊找鬼。 笑死钱烟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忠售。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼卦方,長吁一口氣:“原來是場噩夢啊……” “哼泰佳!你這毒婦竟也來了尘吗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤睬捶,失蹤者是張志新(化名)和其女友劉穎近刘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體觉渴,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年座韵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踢京。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翔烁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹬屹,到底是詐尸還是另有隱情,我是刑警寧澤慨默,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布弧腥,位于F島的核電站,受9級特大地震影響管搪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜更鲁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漂坏。 院中可真熱鬧,春花似錦顶别、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剩失。三九已至,卻和暖如春赴叹,著一層夾襖步出監(jiān)牢的瞬間乞巧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工绽媒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留免猾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓猎提,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锨苏。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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

  • 姓名:劉秋華 公司:薩格建材有限公司 日精進(jìn)打卡第4天 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》誦讀2遍 共9遍 《大學(xué)》誦讀2...
    壞壞劉小七閱讀 105評論 0 0
  • 似乎每年冬天都叫囂著是幾十年不遇的最冷的冬天贞谓,然而年年冬天最后都變成了暖冬似的葵诈。 來青島十年有余,只在大學(xué)期間見過...
    青青苔閱讀 236評論 5 2
  • 94事件后理疙,幣圈經(jīng)過了大規(guī)模的震蕩,很多資金通道都被變更泞坦,對區(qū)塊鏈感興趣的新朋友可能無法像之前的一樣輕松進(jìn)入。但還...
    Hellc閱讀 227評論 0 1
  • 對不起主之,今天的主題又是愛情。 但今天不是感慨槽奕,而是因?yàn)榭吹揭黄P(guān)于愛情的非雞湯、學(xué)術(shù)型文章粤攒,此道可讀。 “你是真的...
    斯卓poppy閱讀 403評論 0 0