0%

使用Kotlin开发Android简易教程

众所周知,现在Kotlin已经成为Android开发的官方语言了,而Kotlin也发布了1.1.1的正式版。Kotlin相比于Java语言有很多优势,比如空指针安全和支持高阶函数等。在Android开发中,已经有很多产品正在使用kotlin了。下面来研究一下Kotlin对Android开发究竟有哪些好处。

准备工作

首先在Android Studio中安装Kotlin插件。在Settings中的Plugin中安装。然后在配置文件中进行如下配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
项目gradle文件
apply plugin: 'com.android.application'
apply plugin:'kotlin-android'
apply plugin:'kotlin-android-extensions'

dependencies {
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.1'
}

app gradle文件
compile 'org.jetbrains.kotlin:kotlin-stdlib:1.1.1'
compile 'org.jetbrains.anko:anko-sdk25:0.10.0-beta-1'// sdk15, sdk19, sdk21, sdk23 are also available
compile 'org.jetbrains.anko:anko-appcompat-v7:0.10.0-beta-1'

从gradle配置文件中可以看到配置了kotlin-android插件,还有Anko库。Anko是Kotlin官方开发的一个让开发Android应用更快速更简单的Kotlin库,并且能让我们书写的代码更简单清楚更容易阅读。

创建项目

与往常一样,创建一个空白Activity的项目。根据准备工作进行配置,并且Sync。同步刷新之后,需要把android studio自动生成的Java代码转换为Kotlin代码,这时需要使用Kotlin插件。

使用Java进行开发android的时候经常使用findviewbyid()这个方法,虽然说有ButterKnife的帮助,但还是很麻烦。但是Kotlin可以直接使用控件的id进行操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
XML布局:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="按钮"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"
android:text="Hello Kotlin-Android"/>

Activity:
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import org.jetbrains.anko.onClick

class MainActivity : AppCompatActivity() {

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

button.onClick { text.text = "按钮生效" } // 只需要一行
}
}

在Java中需要很多行的代码,在Kotlin中只需要一行就可以点击按钮改变文字,很方便吧。

除此之外再举一个例子,比如Activity的跳转,在Java代码中需要new一个Intent,然后赋值,最后跳转,至少三行代码。然而在kotlin中也只需要一行代码。

1
2
3
4
5
6
7
MainActivity:
button2.onClick {
startActivity<SecondActivity>("key" to "value") // 传值
}

SecondActivity:
text.text = intent.extras["key"]?.toString() // 接收值

总结

从上面的例子可以看出使用Kotlin开发Android项目是不是简洁了不少。Anko能做的不止这些,更多的内容请访问Gihub Anko