使用Kotlin开发Android应用

转载请标明出处:夏轩_xiaxuan

1.kotlin介绍
好久没有写博客了,前几天谷歌推出了一种新语言kotlin,简单来说,Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发。

相关网址

kotlin官网地址

2.执行 Settings -> plugins -> BrowseRepositories中搜索“Kotlin”
使用Kotlin开发Android应用_第1张图片
点击“Install JetBrains plugin”
使用Kotlin开发Android应用_第2张图片

2.1.其实新建kotlin和之前创建Activity方式是一样的,但是这里选择的是:

2.2当我们第一次创建一个Kotlin类后,会弹出一个Configure Kotlin的弹窗:
使用Kotlin开发Android应用_第3张图片
2.3点击as Kotlin module 点击ok即可
使用Kotlin开发Android应用_第4张图片

2.4,接下来我们看下在项目的跟build.gradle中配置:

buildscript {
    ext.kotlin_version = '1.1.2-4'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

2.5而在module的build.gradle中:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.android.application'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "yizong.mores.com.day03"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

    compile 'org.jetbrains.anko:anko-sdk15:0.9' // sdk19, sdk21, sdk23 are also available
    compile 'org.jetbrains.anko:anko-support-v4:0.9' // In case you need support-v4 bindings
    compile 'org.jetbrains.anko:anko-appcompat-v7:0.9' // For appcompat-v7 bindings
}
repositories {
    mavenCentral()
}

这里要注意的几个地方:
使用Kotlin开发Android应用_第5张图片

使用Kotlin开发Android应用_第6张图片

3.0现在我们来看下kotlin里面的写法:
然后可以直接使用变量tv进行操作了,非常方便,再也不用每个控件用findViewById查找一遍了(xml布局和之前写法一样)。
以下是完整的代码:

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main2.*


class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        tv.text = "nihao"
        tv.textSize = 16f
        btn.textSize=16f
       //这里Button点击事件: btn.setOnClickListener({startActivity(Intent(Main2Activity@ this, MainActivity::class.java)) })
    }
}

看下xml 布局也很简单:
使用Kotlin开发Android应用_第7张图片

3.1下面我们看下另一个跳转类:

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import org.jetbrains.anko.custom.async
import org.jetbrains.anko.onClick
import org.jetbrains.anko.toast
import org.jetbrains.anko.uiThread
import java.net.URL

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tvmess.text="网络请求"
        tvmess.textSize=18f
        tvmess.onClick {
            toast("好牛逼的toast")
            async() {
        val result=URL("https://www.baidu.com/").readText()
                uiThread {
                    //这里直接写主线程更新
                    tvmess.text=result
                }
            }
        }
    }
}

最终运行如图所示:
使用Kotlin开发Android应用_第8张图片
小结:
Android Studio中还有一个关于Kotlin很实用的操作,就是将Java源代码转化为Kotlin代码:

执行code–> Convert Java File to Kotlin File
由于篇幅所限,Kotlin 还有诸多特性(类扩展,函数运用,DSL 等)并未介绍,请期待后续分享。

你可能感兴趣的:(android,学习笔记)