使用Kotlin进行Android开发
作者:胡光洲
学号:1501210909
一、Kotlin是什么?
Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。 JetBrains,作为目前广受欢迎的 Java IDE IntelliJ 的提供商,在 Apache 许可下已经开源其Kotlin 编程语言。 Kotlin是JVM上的静态类型语言。可以和java相互调用。
二、为何要学这门新语言
函数是第一公民,更简洁
类型安全,正确的处理了null类型
多面手,可以用来开发服务端应用,或是安卓应用,或是浏览器运行的前端代码
有良好的IDE支持,开发效率有保障。
三、使用Kotlin来进行安卓开发
本段参考官网的两篇教程:
Getting started with Android and Kotlin
其中第一篇介绍了如何把一个现有的android项目的java代码转换成Kotlin代码。第二篇给出了一个Kotlin编写的安卓helloworld的例子。 从该例子中可以看出Kotlin的简洁之处。
// Using R.layout.activity_main from the main source set
import kotlinx.android.synthetic.main.activity_main.*
public class MyActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Instead of findView(R.id.textView) as TextView
textView.setText("Hello, world!")
}
}
四、更进一步,使用Anko框架
Anko 是Kotlin项目的一部分,旨在更快更轻松的开发安卓应用。是一个用Kotlin编写的库,也是专门用来进行安卓开发的DSL(领域特定语言)。 使用该库的一个显著的优势就是大幅的简化了界面的编写。
verticalLayout {
val name = editText()
button("Say Hello") {
onClick { toast("Hello, ${name.text}!") }
}
}
以上的代码对应的界面如下
Anko还支持很多其他的特性,比如界面动画,与数据库的交互,实现同步操作,Service,Intent等等。都实现了用更少的代码实现同样的逻辑。
官方给出了一个Anko Example Project 。展示了anko的一些应用场景。在该范例中,介绍了诸如同步,编写UI,编写简单动画等特性。
override fun createView(ui: AnkoContext<MainActivity>) = with(ui) {
verticalLayout {
padding = dip(32)
imageView(android.R.drawable.ic_menu_manage).lparams {
margin = dip(16)
gravity = Gravity.CENTER
}
val name = editText {
hintResource = R.string.name
}
val password = editText {
hintResource = R.string.password
inputType = TYPE_CLASS_TEXT or TYPE_TEXT_VARIATION_PASSWORD
}
button("Log in") {
onClick {
ui.owner.tryLogin(ui, name.text, password.text)
}
}
myRichView()
}.style(customStyle)
}
上面的这一段实现了一个较为复杂的界面。有图片,有两个输入框。还有一个自定义的myRichView()。可见,借由Anko框架,能够有效的实现自定义界面的复用。且可读性比XML负责UI,java来负责对应逻辑的方式好了很多。也更简洁。
另外,需要指出的是,Anko目前的版本是0.8.1,还没有推出正式版。相关的使用资料也很少,主要依靠于项目官网的文档以及IDE的提示。虽然DSL很简洁,但是想要扩展其功能,往往需要明白其背后的实现逻辑,这也会带来新的学习成本。所以建议暂时只使用Anko来开发界面,享受其带来的便利就足够好了。
五、结语
Kotlin作为一门新兴的基于JVM的语言。各种新特性确实令人耳目一新。借助jetbrains强大的支持。也显著的降低了它的学习成本(越来越完善的文档,强大的IDE支持,足够好的社区反馈)。从Anko框架的快速迭代也能看出jetbrain把Kotlin当作Android开发新语言的决心。
学习一门新语言,投入大量的精力,往往被称作是投入时间成本。以我个人的愚见,学习Kotlin或许是个不错的投资。