背景
之前就看到过Kotlin这一门语言,也有不少大神和愿意走在知识最前沿的哥哥姐姐们说这一门语言有多么多么的好,但是本人并没有去了解他,直到前段时间Google大会直接说会支持Kotlin语言,所以我就抽出了一点时间准备学习一下,个人觉得到目前为止这个东西并不是什么刚需,有兴趣可以学习,不想学影响也不是很大,好了关于这门语言有多好,有多叼,我就不多少了,想要了解的出门百度,这里给上源码链接Kotlin-Android项目。
插件安装
环境搭建当然是第一步,也是最重要的一步,但是这个Kotlin的环境搭建却很简单,只要你安装插件就行,个人是Android开发,所以就直接用Android Studio为例:
File—>Setting—>Plugins—>搜索Kotlin
然后点击安装,最后重启Android Studio就行,我这个截图是安装过的
创建项目
Android项目的创建我就不多说了,因为它是Android本身的不涉及到Kotlin语言的,所以与我们平时创建的规则一样,不会的出门百度。
创建一个KotlinActivity
我们在创建的时候我们会发现,安装插件之后就多了这两个:
Kotlin File/Class 就是对应的Kotlin对象我们这次不用,就暂时不讲。
Kotlin Activity 就是我们要创建的KotlinActivity,我们选择它,编译器还是会跟创建普通的Activity帮我们创建布局文件和在AndroidManifest.xml中注册这个Activity。
Groud配置
个人在做第一个HelloWorld的时候就是卡在了这个地方,网上有些说创建KotlinActivity的时候编译器会帮助我们在build.gradle里面生成需要的配置,但是说实话我当时它并没有这么帮我干,那么我们怎么手动配置呢。
首先是项目最外面的build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext.kotlin_version = '1.1.2'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这个是我的完整的配置文件,其实大家只需要在根目录加上最上面那句话
ext.kotlin_version = '1.1.2'
这里有一个问题,我们到底要写什么版本号呢?我当时就遇到了这个肯,在网上拷贝了一个版本好结果怎么都运行不起来,其实这个版本号需要与我们安装的Kotlin插件的版本号一致,那么我们怎么查看自己安装的Kotlin版本号呢?
Tools—>Kotlin—>Config Kotlin Plugin Updates—>Check for updates now
好了,接下来我们来配置一下需要使用Kotlin语言的module的build.gradle配置
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.zxf.kotlin"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// sourceSets {
// main.java.srcDirs += 'src/main/kotlin'
// }
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-beta4'
}
这个是我的配置文件,很清晰,主要就是在根目录最上层加上
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
接下来就是在dependencies 中引用kotlin
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
好了配置的步骤到这就真的彻底结束了,接下来,我们看一下代码。
撸代码啦
我们先来看一下刚刚创建的KotlinActivity的代码
package com.zxf.kotlin
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
class KotlinActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_kotlin)
}
}
布局文件没有任何变化,首先,我们定义两个控件,一个TextView,一个Button并给它们设置上id
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/helloWorld"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/open_next"/>
</LinearLayout>
接下来,就是在Activity里面获取这两个控件了,让我们来看一下代码:
helloWorld.text = "hello world"
open_next.text = "Open Next Activity"
open_next.setOnClickListener { startActivity(Intent(KotlinActivity@this,SecondActivity::class.java)) }
这三句话就完成了给TextView设置文字和给Button设置文字和添加点击事件,到这是不是发现,我擦真是超简单,烦人的findviewbyid()终于不见了,一些没有必要的new 和;也不需要了,简直就是太干净了。
总结
好了,这就完成了一个最简单的Android项目,这里也附上源码地址:
Kotlin-Android项目,我也会在后面个人的学习中不断完善这个项目,欢迎大家评论和提意见,共同成长。