2017年Google IO 大会宣布 Kotlin 为 Android 开发一级语言,近两年 Google IO大会上,Google 不断的支持Kotlin ,成了很多人的期待。 用了一段时间Kotlin,感觉特别简洁,快速,能避免很多模板代码,提升开发效率。
开源地址: https://github.com/Kotlin/anko
Anko 是 JetBrains开发的一个Android 开发框架,帮助Android 开发者方便,快速 ,见到,高效 开发Android应用程序。包括以下部分:
添加依赖
//project gradle 文件
ext.anko_version='0.10.8'
//moudle gradle 文件
dependencies {
implementation "org.jetbrains.anko:anko:$anko_version" //包括上面描述的四部分
}
如果只需要部分特性,可以这样依赖:
dependencies {
// Anko Commons
implementation "org.jetbrains.anko:anko-commons:$anko_version"
// Anko Layouts
implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
// Coroutine listeners for Anko Layouts
implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"
// Anko SQLite
implementation "org.jetbrains.anko:anko-sqlite:$anko_version"
}
下面分别介绍这几个功能:
开启一个Activity
startActivity(intentFor())
开启一个Activity 传递数据:
startActivity("id" to 5)
//传递数据设置启动模式
startActivity(intentFor("id" to 5).singleTop())
//传递多个数据
startActivity(
"id" to 5,
"city" to "Denpasar"
)
弹出 toast:
toast("Hi there!")
toast(R.string.message)
longToast("Wow, such duration")
弹出 Snackbar
view.snackbar("Hi there!")
view.snackbar(R.string.message)
view.longSnackbar("Wow, such duration")
view.snackbar("Action, reaction", "Click me!") { doStuff() }
Android 默认dialog
alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
yesButton { toast("Oh…") }
noButton {}
}.show()
Android Appcompat 中AlertDialog :
alert(Appcompat, "Some text message").show()
自定义Dialog :
alert {
customView {
editText()
}
}.show()
包含列表的Dialog:
val countries = listOf("Russia", "USA", "Japan", "Australia")
selector("Where are you from?", countries, { dialogInterface, i ->
toast("So you're living in ${countries[i]}, right?")
})
Progress dialogs
val dialog = progressDialog(message = "Please wait a bit…", title = "Fetching data")
indeterminateProgressDialog()
class SomeActivity : Activity(), AnkoLogger {
private fun someMethod() {
info("London is the capital of Great Britain")
debug(5) // .toString() method will be executed
warn(null) // "null" will be printed
}
}
XML 写布局的方式依然是常态,感兴趣的可以看看:https://github.com/Kotlin/anko/wiki/Anko-Layouts
感兴趣的可以看看这个:https://github.com/Kotlin/anko/wiki/Anko-SQLite
Anko Coroutines 封装了后台操作的过程,方便前后台线程转换。
import org.jetbrains.anko.doAsync
import org.jetbrains.anko.support.v4.UI
doAsync {
//在这里执行后台耗时操作
UI {
//在这里切换回主线程
}
}
方便优雅
使用Kotlin + Anko 将毕设重写完之后,感觉开发效率能高很多,写的也非常舒服。但是Kotlin也有一些坑,需要注意,比如,延迟加载的对象不能直接判空,首先先要判断是否被初始化。
这次体验先到这里吧,后面再深入研究Kotlin。