首先,打开Android Studio并选择Create new Project,。我们选择API 15,同时新建一个Blank Activity。暂时可以不用去关心Activity的名字,layout等,我们暂时用不到,在这里我们先展示一下如何编写kotlin代码以及它的一些特性。
若你的android studio没有安装kotlin插件,安装教程如下,
在Android Studio中打开Settings,选择Plugins选项,点击Browse Repositories,在打开的新窗口中搜索Kotlin,选择Kotlin与 Kotlin Extenslons For Android(obsolete)两个插件分别进行下载安装。当插件安装完毕后,重启Android Studio即可。
Kotlin插件包括一个让我们配置Gradle的工具。但是我还是倾向于保持我对Gradle文件读写的控制权,否则它只会变得混乱而不会变得简单。不管怎么样,在使用自动工具之前知道它是怎么工作的是个不错的主意。所以这次,我们将手动去做,在这里我们会修改**父build.gradle**,如下,
buildscript {
ext.support_version = '23.1.1'
ext.kotlin_version = '1.0.0'
ext.anko_version = '0.8.2'
repositories {
jcenter()
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
}
allprojects {
repositories {
jcenter()
}
}
正如你看到的,我们创建了一个变量来存储当前的Kotlin版本。你读到这里的时候去检测一下最新版本,因为可能会有更新的版本已经发布了。我们需要在几个不同的地方用到那个版本号,比如你需要加上新的Kotlin插件的dependency。你会在你指定的那些模块中的build.gradle中再次需要到Kotlin标准库。
我们对于support library也是如此,Anko库也是同样的做法。用这个方式可以更方便地在一个地方修改所有的版本号。并且使用相同的版本号,更新的时候也不需要每个地方都修改。统一管理,我觉得这就是软件开发过程中需要的内聚,减少耦合度。
我们会增加Kotlin标准库,Anko库,以及Kotlin和Kotlin Android Extensions plugin插件到dependencies。这里修改模块**build.gradle**
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
...
}
dependencies {
compile "com.android.support:appcompat-v7:$support_version"
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "org.jetbrains.anko:anko-common:$anko_version"
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
注意,Anko是一个用来简化一些Android任务的很强大的Kotlin库。我们之后将会学习部分anko,但是现在来说仅仅增加anko-common就足够了。这个库被分割成了一系列小的部分,所以我们不会把没用到的部分加进来。
到这一步,我们就基本把kotlin开发环境搭建好了,下面,我们就可以尝试编写我们的第一个程序了。
Kotlin plugin包含了一个有趣的特性,它能把Java代码自动转成Kotlin代码。虽然这样的转换可能会有很多问题,但是,在你能够使用Kotlin语言开始编写代码之前,它还是能提供不少的帮助。
所以我们在刚才新建的android studio 项目中,在MainActivity.java类中使用它。打开文件,然后选择Code -> Convert Java File to Kotlin File。我们可以对比一下java和kotlin的不同之处,让大家有个更深刻的印象。
首先,打开activity_main.xml,然后设置TextView的id:
<TextView
android:id="@+id/message"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
在onCreate中,你现在可以直接得到并访问这个TextView了。注意给TextView文本赋值的方法。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
message.text = "Hello Kotlin!"
}
多亏Kotlin和Java之间的互操作性,我们可以在Kotlin中像操作属性一样去操作Java库中的getter/setter方法。我们之后再去讲解属性,但是我想提醒的是,我们可以使用message.text来代替message.setText。编译器将会把它转换成一般的Java代码,所以这样使用是没有任何性能开销的。