最火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详解的主要内容,如果未能解决你的问题,请参考以下文章

体验:Anko + Kotlin

如何在 Kotlin 中使用 anko 删除除最新 10 条记录之外的所有记录?

用Anko和Kotlin实现Android上的对话框和警告提示(KAD 24)

Kotlin/Anko/OpenCV/CameraView 无法创建处理程序,因为线程尚未调用 Looper.prepare()

是否可以在 Kotlin Anko 中重用布局

在Android上运用Anko和Kotlin开发数据库:SQLite从来不是一件轻松的事(KAD25)