最火Kotlin库之Anko详解
Posted 东京程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最火Kotlin库之Anko详解相关的知识,希望对你有一定的参考价值。
Anko是JetBrains开发的一个强大的库。主要用来替代以XML的方式生成UI布局。同时,Anko 是一个使开发android应用更简单更快捷的库,Anko使你的代码简洁易懂, 使开发者不用再在意Android SDK对Java版本的限制(但是目前还不支持Java8 )。
Anko有以下部分组成:
共享空间:这是一个轻量的库来实现intents, dialogs, logging等;
Anko Layouts: 一种快速和类型安全的方式来编写动态Android布局;
Anko SQLite: 一个Android SQLite查询DSL和分析收集器;
Anko Coroutines:基于kotlinx.coroutines类库。
1.Anko Commons
这是一个基于Kotlin Android developer的工具箱,这个库包含了很多SDK的帮助者,包括但不限于:
Intents
Dialogs and toasts
Logging
Resources and dimensions
2.Anko Layouts
该布局是DSL编写动态Android布局。这里是用该DSL的一个简单的用户界面:来举个例子吧:
verticalLayout { val name = editText() button("Say Hello") { onClick { toast("Hello, ${name.text}!") } } }
上面的代码创建了一个LinearLayout里面的按钮,按钮的设置onclicklistener。此外,按钮上边显示的文字是“say Hello”,同时被点击的时候弹出Toast显示EditView输入的文字。
3.Anko SQLite
在使用java语言开发android的时候,对数据库的操作总是反复的使用cursor,Anko SQLite提供了许多帮手的简化与SQLite数据库的工作。来看一段代码:
fun getUsers(db: ManagedSQLiteOpenHelper): List<User> = db.use { db.select("Users") .whereSimple("family_name = ?", "John") .doExec() .parseList(UserParser) }
这段代码的功能是:获取具有特定名称的用户列表。
4.Anko Coroutines
Anko Coroutines是基于kotlinx.coroutines类提供的:
bg()这是函数执行的一个集合池。
asreference()创建弱引用包装器的函数。默认情况下,并且是拍摄对象的引用直到完成或取消。如果你的异步框架不支持取消,asreference()就是用来防止异步块的值可以被泄露的bug。
5.如何使用Anko
你可以只配置你需要的Anko部分:
dependencies { // Anko Commons compile "org.jetbrains.anko:anko-commons:$anko_version" // Anko Layouts compile "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available compile "org.jetbrains.anko:anko-appcompat-v7:$anko_version" // Coroutine listeners for Anko Layouts compile "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version" compile "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version" // Anko SQLite compile "org.jetbrains.anko:anko-sqlite:$anko_version"}
还有一些可用于Android的支持库:
dependencies { // Appcompat-v7 (only Anko Commons) compile "org.jetbrains.anko:anko-appcompat-v7-commons:$anko_version" // Appcompat-v7 (Anko Layouts) compile "org.jetbrains.anko:anko-appcompat-v7:$anko_version" compile "org.jetbrains.anko:anko-coroutines:$anko_version" // CardView-v7 compile "org.jetbrains.anko:anko-cardview-v7:$anko_version" // Design compile "org.jetbrains.anko:anko-design:$anko_version" compile "org.jetbrains.anko:anko-design-coroutines:$anko_version" // GridLayout-v7 compile "org.jetbrains.anko:anko-gridlayout-v7:$anko_version" // Percent compile "org.jetbrains.anko:anko-percent:$anko_version" // RecyclerView-v7 compile "org.jetbrains.anko:anko-recyclerview-v7:$anko_version" compile "org.jetbrains.anko:anko-recyclerview-v7-coroutines:$anko_version" // Support-v4 (only Anko Commons) compile "org.jetbrains.anko:anko-support-v4-commons:$anko_version" // Support-v4 (Anko Layouts) compile "org.jetbrains.anko:anko-support-v4:$anko_version"}
有一个Anko的入门项目,有兴趣的同学可以参考一下:
https://github.com/Kotlin/anko-example
以上是关于最火Kotlin库之Anko详解的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Kotlin 中使用 anko 删除除最新 10 条记录之外的所有记录?
用Anko和Kotlin实现Android上的对话框和警告提示(KAD 24)
Kotlin/Anko/OpenCV/CameraView 无法创建处理程序,因为线程尚未调用 Looper.prepare()