Github地址
Anko
是一个使 Android应用程序 开发更快,更容易的库。它使你的代码变得简洁易读,并让您忘记 Android SDK for Java
的粗糙边缘。git
Anko 由几部分组成:github
Anko Commons
:一个轻量级的库,里面充满了intents
,对话框,日志等帮助器;Anko Layouts
:用于编写动态Android布局 的快速且类型安全的方法;Anko Commons
是 Kotlin Android
开发人员的“工具箱”。该库包含不少Android SDK助手
,包括但不限于:sql
_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 拥有一个用于 ConstraintLayout
的 DSL
。app
还有一个Android Studio 插件,支持预览 Anko DSL布局。框架
注意:这是一个完整布局的代码。不须要 XML异步
你是否厌倦过使用Android游标解析SQLite查询结果?Anko SQLite提供了许多帮助程序来简化SQLite数据库的工做。函数
例如,如下是如何获取具备特定名称的用户列表:工具
fun getUsers(db: ManagedSQLiteOpenHelper): List<User> = db.use { db.select("Users") .whereSimple("family_name = ?", "John") .doExec() .parseList(UserParser) }
Anko Coroutines
基于 kotlinx.coroutines 的库,并提供:
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.