AndroidKotlin从入门到放弃

Kotlin 之旅8--实际应用

2017-08-22  本文已影响178人  小楠总

Kotlin的应用领域

可见,Kotlin的目标是全栈语言。

Kotlin脚本

例如我们写一个hello.kts:

import java.io.File

println("hello kotlin script")
//列出当前目录文件
File(".").list().forEach(::println)

然后我们可以直接在IDEA中运行,也可以通过下面的命令执行(需要安装Kotlin编译器):

kotlinc -scrit hello.kts

Kotlin脚本运行原理

首先会编译成一个类,代码会加到构造方法中,然后被Kotlinc加载,加载构造的时候就执行了我们脚本代码。

Kotlin Android开发

项目转换

创建一个Android项目,然后点击Tools->Kotlin->Configure Kotlin in Project,即可完成项目的转换,实际上是修改了Gradle脚本:

顶层的Gradle脚本(只给出变化的部分):

buildscript {
    ext.kotlin_version = '1.1.4-2'
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

Module的Gradle脚本(只给出变化的部分):

apply plugin: 'kotlin-android'

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}

代码转换

接下来将Java代码转换成Kotlin代码,打开一个Java类,选择Code->Convert Java File to Kotlin File

例如,转换后的Activity是这样的:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

}

不用findView

在Gradle脚本中加入这个插件:

apply plugin: "kotlin-android-extensions"

在布局文件中定义的控件:

<TextView
    android:id="@+id/tvHello"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

可以直接这样使用:

tvHello.text = "hello"

使用anko

首先引入依赖:

compile 'org.jetbrains.anko:anko-sdk15:0.9.1'

anko这个库扩展了很多方法,比如:

监听与吐司:

fun android.view.View.onClick(l: (v: android.view.View?) -> Unit) {
    setOnClickListener(l)
}

fun Context.toast(message: Int) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()

//实际使用
tvHello.onClick { view ->
    toast(view!!.id)
}

startActivity方法:

//不传参数
startActivity<Main2Activity>()
//传参数
startActivity<Main2Activity>("key" to "value")

//获取参数
intent.extras["key"]?.let {
    toast(it.toString())
}

书写界面:

relativeLayout {
    textView("hello") {

    }.lparams {
        width = wrapContent
        height = wrapContent
    }
}

Kotlin前端开发

例如创建一个Kotlin-JavaScript项目,创建一个.kt文件:

import kotlin.browser.document

fun main(args: Array<String>) {
    println("控制台输出")
    document.writeln("页面输出")
}

然后写一个测试页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--kotlin的JS库-->
    <script type="text/javascript" src="out/production/KotlinJs/lib/kotlin.js"></script>
    <!--自己写的kotlin代码编译出来的JS文件-->
    <script type="text/javascript" src="out/production/KotlinJs/KotlinJs.js"></script>

</head>
<body>

</body>
</html>

自己写的Kotlin代码会被编译成“out/production/KotlinJs/项目名.js”文件,只需要在HTML中导入Kotlin官方的库以及自己生成的库即可使用。

Kotlin调用JavaScript代码:

例如我们有一个Test.js文件:

function test() {
    alert("haha")
}

Kotlin中是这样调用的:

js("test()")

HTML代码中只需要添加js库即可:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--kotlin的JS库-->
    <script type="text/javascript" src="out/production/KotlinJs/lib/kotlin.js"></script>
    <!--自己写的的JS库-->
    <script type="text/javascript" src="src/Test.js"></script>
    <!--自己写的kotlin代码编译出来的JS文件-->
    <script type="text/javascript" src="out/production/KotlinJs/KotlinJs.js"></script>

</head>
<body>

</body>
</html>
Tips:由于这里是Kotlin调用JS,因此JS需要先加载,这涉及到前段端的知识。

关于更多的应用,将后续更新,敬请期待。

如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:

公众号:Android开发进阶

我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)

上一篇下一篇

猜你喜欢

热点阅读