目录

 

前言

什么是Kotlin?

Anko是什么?

使用kotlin+Anko

Kotlin Android Extensions

把MainActivity转换成Kotlin代码

配置kotlin到项目

测试是否一切就绪

原文链接:https://blog.csdn.net/u014133119/article/details/81134201


 

前言

 

什么是Kotlin?


Kotlin它是JetBrains开发的基于JVM的语言。JetBrains因为创造了一个强大的Java开发IDE被大家所熟知。Android Studio,官方的Android IDE,就是基于Intellij,作为一个该平台的插件。

 

相比Java 的优势
1.更加易表现:可以编写的代码少。
2.更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。如果一个对象可以是null,则我们需要明确地指定它,然后在使用它之前检查它是否是null。你可以节约很多调试空指针异常的时间,解决掉null引发的bug。
3.函数式的:Kotlin是基于面向对象的语言。但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。
4.可以扩展函数:这意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类中的代码。
5.高度互操作性的:你可以继续使用所有的你用Java写的代码和库,因为两个语言之间的互操作性是完美的。甚至可以在一个项目中使用Kotlin和Java两种语言混合编程

Anko是什么?


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


 

使用kotlin+Anko

 

创建项目我就不说了,我们在这里只看一些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 Android Extensions


      另一个Kotlin团队研发的可以让开发更简单的插件是 Kotlin AndroidExtensions 。当前仅仅包括了view的绑定。这个插件自动创建了很多的属性来让我们直接访问XML中的view。这种方式不需要你在开始使用之前明确地从布局中去找到这些views。

     这些属性的名字就是来自对应view的id,所以我们取id的时候要十分小心,因为它们将会是我们类中非常重要的一部分。这些属性的类型也是来自XML中的,所以我们不需要去进行额外的类型转换。

     Kotlin Android Extensions 的一个优点是它不需要在我们的代码中依赖其它额外的库。它仅仅由插件组层,需要时用于生成工作所需的代码,只需要依赖于Kotlin的标准库。

     那它背后是怎么工作的?该插件会代替任何属性调用函数,比如获取到view并具有缓存功能,以免每次属性被调用都会去重新获取这个view。需要注意的是这个缓存装置只会在 Activity 或者 Fragment 中才有效。如果它是在一个扩展函数中增加的,这个缓存就会被跳过,因为它可以被用在 Activity 中但是插件不能被修改,所以不需要再去增加一个缓存功能。

 

把MainActivity转换成Kotlin代码

 

选择 Code -> ConvertJava File to Kotlin File,操作图如下:

 

 

配置kotlin到项目

 

选择 Tools-> Kotlin->Confinf Kotlin Plugin Updates,操作图如下:

 

测试是否一切就绪


我们想再将编写一些代码来测试Kotlin Android Extensions是否在工作。我现在还不会对这些代码做解释,但是我想要确保它们在你的环境中是正常运行的。这可能是配置中最难的一部分。首先,打开 activity_main.xml ,然后设置TextView的id:

 

<?xml version="1.0" encoding="utf-8"?>    

 

接着我们在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,会给我们个提示,让我们去选择,如下图所示:

 

 

导入成功后我们会看到,如下这个包:

 

 

至此,我们的操作完成。代码运行效果如下:

 

 

 

原文链接:https://blog.csdn.net/u014133119/article/details/81134201

 

更多相关文章

  1. 使用Menu制作弹出菜单
  2. 【Android学习笔记】Spinner
  3. AndroidStudio插件集合
  4. 使用ViewPager来实现Tab的效果
  5. Android绘制进阶之四:在位图上绘制文本并旋转
  6. android AlertDialog布局 ——2
  7. ARouter使用及源码简析
  8. Android侧拉框Demo
  9. android通过JNI控制GPIO

随机推荐

  1. 利用HTML5开发Android笔记(中篇)
  2. 回顾 android 1.6下的 virtual key
  3. [置顶] [小代码]连接MySQL数据库(android,p
  4. Android编译环境
  5. Android学习笔记之源码下载打包
  6. android TextView XML的一些属性
  7. Android(安卓)Handler机制详解:在线程中新
  8. 英特尔® Android* USB 驱动程序安装指南
  9. android中刷新Invalidate和postInvalidat
  10. 解析Android中的XML