Kotlin4Android學(xué)習(xí)總結(jié)二:Kotlin在Android中的基本使用

在上一篇中我們安裝了Kotlin并且新建了一個(gè)Kotlin Activity堡僻。這一篇寫Kotlin在Android中的基本使用找岖,Kotlin為什么受到那么多大牛的追捧姐刁,就是因?yàn)榱逦埽袝r(shí)候使用它開(kāi)發(fā)確實(shí)能夠提升效率蘸际,節(jié)省不少代碼座哩。甚至有些寫法我感覺(jué)可以被稱為奇技淫巧。
例如:

  • 如何findViewById
  • 如何設(shè)置setOnClickListener
  • 如何跳轉(zhuǎn)Activity
  • 如何吐司
  • ...

1粮彤,關(guān)于findViewById

例如我的布局文件是這樣:

<?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="com.learn.secondkotlin.SecondActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按鈕"/>
</LinearLayout>

在SecondActivity.kt這個(gè)Activity中其實(shí)不存在findViewById這個(gè)功能根穷,因?yàn)閷?duì)于Kotlin開(kāi)發(fā)Android來(lái)說(shuō),findViewById已經(jīng)被革命了导坟∮炝迹看下圖,我們只需要輸入but這個(gè)字符串惫周,都不需要完全輸入button尘惧,Android studio的強(qiáng)大聯(lián)想直接幫我們找到了。我們所要做的僅僅是個(gè)回車递递,我們這里回車的效果相當(dāng)于以下代碼:

import android.widget.Button;
private Button button;

button= (Button) findViewById(R.id.button);

其實(shí)細(xì)心的觀眾會(huì)發(fā)現(xiàn)喷橙,在這里它為我們加了一句

import kotlinx.android.synthetic.main.activity_second.*

這句話我們不需要深入理會(huì),就知道因?yàn)樗覀儾恍枰猣indViewById了漾狼,都幫我們引入了重慢。

37C1A37B-75EC-4061-8AFE-597A15AF9905.png

2,設(shè)置setOnClickListener

很簡(jiǎn)單,就是以下逊躁。是不是看上去代碼少了些東西似踱,而且,當(dāng)你真正開(kāi)發(fā)的時(shí)候,使用我們強(qiáng)大的IDE--Android Studio核芽。寫這個(gè)的體驗(yàn)會(huì)更爽一些囚戚,總感覺(jué)我還有些東西沒(méi)做,但是其實(shí)你真的不需要再做什么了轧简。
Kotlin:

button.setOnClickListener {
            button.text="按鈕被點(diǎn)擊了"
        }

java:

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                button.setText("按鈕被點(diǎn)擊了");
            }
        });

當(dāng)然驰坊,只有setOnClickListener這一個(gè)方法寫法簡(jiǎn)便怎么能夠呢,后面還會(huì)講EditText的文本輸入監(jiān)聽(tīng)等一些其他的類似的監(jiān)聽(tīng)哮独。

3,跳轉(zhuǎn)Activity

Kotlin

button.setOnClickListener {
            val intent=Intent(this,ThirdActivity::class.java)
            startActivity(intent)
        }

or

button.setOnClickListener {
            val intent = Intent(this@MainActivity, TestActivity::class.java)
            startActivity(intent)
        }

java:

Button button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,ThirdActivity.class);
                startActivity(intent);
            }
        });

在這里補(bǔ)充一些基本Kotlin理論知識(shí)拳芙,kotlin中使用val定義常量,var定義變量皮璧。val相當(dāng)于在java的變量前面加了一個(gè)final限定舟扎。如果是個(gè)會(huì)變化的變量使用 var,不會(huì)變化的使用val悴务。
Kotlin 沒(méi)有 new 關(guān)鍵字睹限,所以創(chuàng)建一個(gè)類的實(shí)例如以下格式:

val invoice = Invoice()
val customer = Customer("Joe Smith")

所以這里的Intent

val intent=Intent(this,ThirdActivity::class.java)

關(guān)于吐司Toast

如下:

button.setOnClickListener {
            Toast.makeText(this,"哈哈,這是一個(gè)Toast",Toast.LENGTH_SHORT).show()
        }

我X讯檐,這個(gè)Toast我也會(huì)羡疗,這還用寫嗎。

這里我主要是拋磚引玉别洪,因?yàn)橐话闱闆r下叨恨,項(xiàng)目開(kāi)發(fā)時(shí)你是不會(huì)這樣寫Toast的,一般你會(huì)寫一個(gè)工具類ToastUtils.show("")挖垛,或者在基類BaseActivity中建一個(gè)方法showToast("")特碳。但是我們進(jìn)入Kotlin世界,上述這些方法變得更加簡(jiǎn)單晕换,下面我們要引入一個(gè)重量級(jí)選手--拓展函數(shù)。有了拓展函數(shù)媽媽再也不擔(dān)心我寫工具類那么累了

如何使用呢站宗?
先新建一個(gè)Kotlin文件

AD6F6E51-F0C1-415F-B44B-C8C236EE0A40.png

代碼也很簡(jiǎn)單:

package com.learn.secondkotlin.extend

import android.content.Context
import android.widget.Toast

/**
 * Created by sg on 17/8/31.
 */

/**
 * 對(duì)Context的拓展函數(shù)闸准,彈Toast
 */
fun Context.toast(message:String, length: Int= Toast.LENGTH_SHORT){
    Toast.makeText(this,message,length).show()
}

使用此方法:

button.setOnClickListener {
//            Toast.makeText(this,"哈哈,這是一個(gè)Toast",Toast.LENGTH_SHORT).show()
            toast("哈哈梢灭,這是一個(gè)Toast")
        }

是不是體會(huì)到拓展函數(shù)的強(qiáng)大了夷家,后續(xù)還會(huì)繼續(xù)介紹舉例拓展函數(shù)

第二篇完。敏释。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末库快,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钥顽,更是在濱河造成了極大的恐慌义屏,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異闽铐,居然都是意外死亡蝶怔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門兄墅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踢星,“玉大人,你說(shuō)我怎么就攤上這事隙咸°逶茫” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵五督,是天一觀的道長(zhǎng)藏否。 經(jīng)常有香客問(wèn)我,道長(zhǎng)概荷,這世上最難降的妖魔是什么秕岛? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮误证,結(jié)果婚禮上继薛,老公的妹妹穿的比我還像新娘。我一直安慰自己愈捅,他們只是感情好遏考,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蓝谨,像睡著了一般灌具。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上譬巫,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天咖楣,我揣著相機(jī)與錄音,去河邊找鬼芦昔。 笑死诱贿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咕缎。 我是一名探鬼主播珠十,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼凭豪!你這毒婦竟也來(lái)了焙蹭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嫂伞,失蹤者是張志新(化名)和其女友劉穎孔厉,沒(méi)想到半個(gè)月后拯钻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烟馅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年说庭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郑趁。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刊驴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寡润,到底是詐尸還是另有隱情捆憎,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布梭纹,位于F島的核電站躲惰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏变抽。R本人自食惡果不足惜础拨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绍载。 院中可真熱鬧诡宗,春花似錦、人聲如沸击儡。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阳谍。三九已至蛀柴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矫夯,已是汗流浹背鸽疾。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留训貌,地道東北人肮韧。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像旺订,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子超燃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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