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.