【Kotlin For Android】(三): Anko 库

一、简介

Github地址
Anko 是一个使 Android应用程序 开发更快,更容易的库。它使你的代码变得简洁易读,并让您忘记 Android SDK for Java 的粗糙边缘。

Anko 由几部分组成:

  • Anko Commons:一个轻量级的库,里面充满了intents,对话框,日志等帮助器;
  • Anko Layouts:用于编写动态Android布局 的快速且类型安全的方法;
  • Anko SQLite:查询适用于 Android SQLite的 DS L和分析器集合;
  • Anko Coroutines:基于 kotlinx.coroutines 库的实用程序。

1.1、Anko Commons

Anko CommonsKotlin Android 开发人员的“工具箱”。该库包含很多Android SDK助手,包括但不限于:

  • Intents (wiki);
  • Dialogs and toasts (wiki);
  • Logging (wiki);
  • Resources and dimensions (wiki).

1.2、Anko Layouts (wiki)

_Anko Layouts_是用于编写动态Android布局的DSL。这是一个用Anko DSL编写的简单用户界面:

verticalLayout {
    val name = editText()
    button("Say Hello") {
        onClick { toast("Hello, ${name.text}!") }
    }
}

上面的代码在 LinearLayout 中创建了一个按钮,这个按钮添加了OnClickListene。而且,onClick接受一个suspend lambda,所以你可以在监听器里写你的异步代码!

自v0.10.4以来,Anko 拥有一个用于 ConstraintLayoutDSL

还有一个Android Studio 插件,支持预览 Anko DSL布局。

注意:这是一个完整布局的代码。不需要 XML

1.3、Anko SQLite (wiki)

你是否厌倦过使用Android游标解析SQLite查询结果?Anko SQLite提供了许多帮助程序来简化SQLite数据库的工作。

例如,以下是如何获取具有特定名称的用户列表:

fun getUsers(db: ManagedSQLiteOpenHelper): List<User> = db.use {
    db.select("Users")
            .whereSimple("family_name = ?", "John")
            .doExec()
            .parseList(UserParser)
}

1.4、Anko Coroutines (wiki)

Anko Coroutines 基于 kotlinx.coroutines 的库,并提供:

  • bg() :函数在公共池中执行您的代码。
  • asReference() : 函数创建一个弱引用包装。默认情况下,协程持有对捕获对象的引用,直到完成或取消为止。如果您的异步框架不支持取消,则在异步块内使用的值可能会泄漏。asReference()保护你免受此影响。

二、 Anko 使用

Anko有一个元依赖关系,它可以一次性将所有可用功能(包括Commons,Layouts,SQLite)插入到您的项目中:

dependencies {
    implementation "org.jetbrains.anko:anko:$anko_version"
}

确保你已经在项目级别的Gradle文件中设置 $anko_version:

ext.anko_version='0.10.4'

如果你只需要一些功能,你可以参考Anko的部分:

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"
}

Android支持库还有一些工件:

dependencies {
    // Appcompat-v7 (only Anko Commons)
    implementation "org.jetbrains.anko:anko-appcompat-v7-commons:$anko_version"

    // Appcompat-v7 (Anko Layouts)
    implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
    implementation "org.jetbrains.anko:anko-coroutines:$anko_version"

    // CardView-v7
    implementation "org.jetbrains.anko:anko-cardview-v7:$anko_version"

    // Design
    implementation "org.jetbrains.anko:anko-design:$anko_version"
    implementation "org.jetbrains.anko:anko-design-coroutines:$anko_version"

    // GridLayout-v7
    implementation "org.jetbrains.anko:anko-gridlayout-v7:$anko_version"

    // Percent
    implementation "org.jetbrains.anko:anko-percent:$anko_version"

    // RecyclerView-v7
    implementation "org.jetbrains.anko:anko-recyclerview-v7:$anko_version"
    implementation "org.jetbrains.anko:anko-recyclerview-v7-coroutines:$anko_version"

    // Support-v4 (only Anko Commons)
    implementation "org.jetbrains.anko:anko-support-v4-commons:$anko_version"

    // Support-v4 (Anko Layouts)
    implementation "org.jetbrains.anko:anko-support-v4:$anko_version"

    // ConstraintLayout
    implementation "org.jetbrains.anko:anko-constraint-layout:$anko_version"
}

There is an example project showing how to include Anko library into your Android Gradle project.

转载于:https://my.oschina.net/Agnes2017/blog/1802410

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值