现在的 Android Studio 默认已经将 Kotlin 作为开发语言,所以新建项目时,勾选 support Kotlin 集成 Kotlin 所需要的一些必要库了。如下:
// 在项目的build.gradle 文件中有如下配置:
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
//kotlin-gradle-plugin 编译Kotlin代码
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
// 在项目Module下的build.gradle 文件中 添加如下依赖:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
// 文件最顶层添加plugin
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
这里给大家项目中常用的几个点:
say bye to findViewById
在 Android 开发中相比大家一定被一堆的 findViewById 所厌烦,而在 Kotlin 中再也无需使用了,butterknife
也不需要使用了,直接使用 Layout 中控件 id 就可操作 view ,如下:
// layout activity_main 文件
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
// Kotlin MainActivity
import kotlinx.android.synthetic.main.activity_main.* // 必须引入
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 直接使用layout中控件的id进行操作。
textview!!.text = "hello Kotlin"
}
控件的访问和操作就是这么简洁,这里需要确认 import 指定的布局文件,如果有子 view,记得也需要引入进来,不然在运行时会有异常。
网络请求
之前进行一次简单的网略请求,需要写很长的代码,而 Kotlin 依据就简单搞定,如下:
val response = URL("baidu.com").readText()
async/uiThread
Android 中异步写起来很麻烦,AsyncTask、Handler 等,而 Kotlin 则写起来轻松很多,
async {
val result = URL("<api call>").readText()
uiThread {
Log.d("Request", result)
longToast("Request performed")
}
}
async/uiThread 可以很方便的进行异步执行,或者切换到主线程操作。
总之,Kotlin 提供了很多简洁,高效的方法,供我们使用,使得我们开发起来方便很多,原来写 100 行才能完成的功能,用 Kotlin 也许 30 行就搞定。