在上一篇中我們安裝了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了漾狼,都幫我們引入了重慢。
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文件
代碼也很簡(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ù)
第二篇完。敏释。