目录
前言
什么是Kotlin?
Anko是什么?
使用kotlin+Anko
Kotlin Android Extensions
把MainActivity转换成Kotlin代码
配置kotlin到项目
测试是否一切就绪
原文链接:https://blog.csdn.net/u014133119/article/details/81134201
Kotlin它是JetBrains开发的基于JVM的语言。JetBrains因为创造了一个强大的Java开发IDE被大家所熟知。Android Studio,官方的Android IDE,就是基于Intellij,作为一个该平台的插件。
1.更加易表现:可以编写的代码少。 2.更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。如果一个对象可以是null,则我们需要明确地指定它,然后在使用它之前检查它是否是null。你可以节约很多调试空指针异常的时间,解决掉null引发的bug。 3.函数式的:Kotlin是基于面向对象的语言。但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。 4.可以扩展函数:这意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类中的代码。 5.高度互操作性的:你可以继续使用所有的你用Java写的代码和库,因为两个语言之间的互操作性是完美的。甚至可以在一个项目中使用Kotlin和Java两种语言混合编程 |
Anko是JetBrains开发的一个强大的库。它主要的目的是用来替代以前XML的方式来使用代码生成UI布局。Anko是一个用来简化一些Android任务的很强大的Kotlin库。
1.kotlin官网https://www.jetbrains.com/
2.学习kotlin https://antonioleiva.com/kotlin/
3.【插件】Xml To Kotlin Anko DSL
创建项目我就不说了,我们在这里只看一些Gradle相关配置,build.gradle 配置如下:
buildscript {
ext.kotlin_version = '1.2.51'
ext.anko_version = '0.8.2'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions: $kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
另外我们会增加 Kotlin 标准库, Anko 库,以及 Kotlin 和 Kotlin AndroidExtensions plugin 插件到dependencies。在我们项目app目录下的build.gradle文件中配置如下:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 23
defaultConfig {
applicationId "com.retrofit.cardviewtest"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:23+'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation "org.jetbrains.anko:anko-common:$anko_version"
}
repositories {
mavenCentral()
}
Anko是一个用来简化一些Android任务的很强大的Kotlin库。具体网上也有很多讲解到的,这里我推荐一个:https://www.aliyun.com/jiaocheng/topic_1775.html。到此我们所有的事情都处理完了,下来具体看一下在代码中应用。
另一个Kotlin团队研发的可以让开发更简单的插件是 Kotlin AndroidExtensions 。当前仅仅包括了view的绑定。这个插件自动创建了很多的属性来让我们直接访问XML中的view。这种方式不需要你在开始使用之前明确地从布局中去找到这些views。
这些属性的名字就是来自对应view的id,所以我们取id的时候要十分小心,因为它们将会是我们类中非常重要的一部分。这些属性的类型也是来自XML中的,所以我们不需要去进行额外的类型转换。
Kotlin Android Extensions 的一个优点是它不需要在我们的代码中依赖其它额外的库。它仅仅由插件组层,需要时用于生成工作所需的代码,只需要依赖于Kotlin的标准库。
那它背后是怎么工作的?该插件会代替任何属性调用函数,比如获取到view并具有缓存功能,以免每次属性被调用都会去重新获取这个view。需要注意的是这个缓存装置只会在 Activity 或者 Fragment 中才有效。如果它是在一个扩展函数中增加的,这个缓存就会被跳过,因为它可以被用在 Activity 中但是插件不能被修改,所以不需要再去增加一个缓存功能。
选择 Code -> ConvertJava File to Kotlin File,操作图如下:
选择 Tools-> Kotlin->Confinf Kotlin Plugin Updates,操作图如下:
我们想再将编写一些代码来测试Kotlin Android Extensions是否在工作。我现在还不会对这些代码做解释,但是我想要确保它们在你的环境中是正常运行的。这可能是配置中最难的一部分。首先,打开 activity_main.xml ,然后设置TextView的id:
接着我们在MainActivity的onCreate方法中直接访问到这个TextView了,代码操作如下:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv_kotlin.text = "dawsa"
}
}
在这里我们需要import一个包,这里有两种方法:第一种是直接 import kotlinx.android.synthetic.main.activity_main.*就可以了,但是这对新手肯定不合适,新手怎么知道要导入这样的一个包,那么我们直接看第二种方法,方法如下操作:
鼠标放在我们命名的id上(tv_kotlin),Alt+Enter,会给我们个提示,让我们去选择,如下图所示:
导入成功后我们会看到,如下这个包:
至此,我们的操作完成。代码运行效果如下: