2017年google开发者大会宣布Kotlin为Android开发的第一语言,这无疑算是一个重磅炸弹。个人看了看Kotlin的语法,感觉google这个思路有点像苹果ios开发的swift和OC,而Kotlin的语言性质和语法也与swift相仿,闲话少叙,做个简单的demo尝尝鲜再说。
首先,下载Android Studio 3.0,之所以下载尝鲜版的3.0,是本人实在不想去配置Kotlin了,而且将来Android Studio3.0发布后,直接支持Kotlin,我们早晚要去面对它,不如现在就拿来练手。创建项目的步骤基本类似,这里不再赘述,只是在创建项目,输入项目名称时注意勾选,然后一路next,第一次运行Android Studio创建项目需要多等一会儿。
项目创建好后,我们别急着开发,如果去Kotlin官网看看,会看到一个好东西,我们在build.gradle(Module:app)中加入:
apply plugin: 'kotlin-android-extensions'
这个插件会帮我们按照我们布局文件中给出的id生成对应的变量,我们不需要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"
android:orientation="vertical"
android:gravity="center"
tools:context="com.yjp.kotlin.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Button
android:id="@+id/clickButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
</LinearLayout>
和以前的开发没有差别,主要变化在于类代码中,我们使用Kotlin而不是Java
package com.yjp.kotlin
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
clickButton.setOnClickListener { _ ->
val visibility = textView.visibility
if (visibility == View.VISIBLE) {
textView.visibility = View.GONE
} else {
textView.visibility = View.VISIBLE
}
}
}
}
抛开Kotlin的语法(有空我尽可能慢慢给大家唠唠),代码简洁是最大的变化,没有了findViewById,lambda表达式也很简洁,也没有大量的变量声明和定义,最关键的,我们看不到分号XD。
上面就是我们尝鲜的demo,总体来看,Kotlin开发Android可以让代码更加简洁,同时,Kotlin的语法相对简单,还可以直接调用Java代码,所以大量的Java包我们还是可以使用的。个人认为,考虑到google已经支持了Kotlin,作为Android开发还是尽可能快的迁移到使用Kotlin开发比较好,毕竟有苹果的swift作为先例。不过迁移之痛就是初期可能会缺少文档,找问题是个让人头疼的事,只能经常逛逛官方网站,看看英文文档。