簡評: 這裏介紹的僅僅是 Anko 中很小的一部分,Kotlin + Anko 真的讓 Android 開發簡化了不少,用了 Anko 基本就可以告別那些什麼 Android 不得不知的代碼收集貼了。
Anko 是 JetBrains 針對 Kotlin 推出的 Android 開發庫,其目的是通過 Kotlin 讓 Android 開發更加簡單。
Anko 主要有四個模塊:
- Commons
- Layouts
- SQLite
- Coroutines
在這篇文章中,我們先主要介紹其 Commons 模塊中的一些內容:
首先,View.setOnClickListener 方法可以說是廣大 Android 開發者寫得最多的方法之一了,如果你是用 Kotlin,那麼代碼看起來應該是類似這樣的:
button.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View) {
}
})
通過使用 Anko 可以把代碼縮減爲:
button.onClick { }
Intent
當我們希望跳轉到新的 Activity 時,代碼類似這樣:
val intent = Intent(this, MainActivity::class.java)
intent.putExtra("id", 5)
intent.putExtra("name", "John")
startActivity(intent)
而通過 Anko:
startActivity<mainactivity>("id" to 5, "name" to "John")
Anko 還封裝了一些常用的功能,讓我們無需定義 Intent:
browse("https://makery.co")
share("share", "subject")
email("[email protected]", "Great app idea", "potato")
尺寸的單位問題
通過 Anko,Android 中的尺寸單位換算也變得無比簡單:
val dpAsPx = dip(10f)
sp(15f)
API level 的問題
碎片化是 Android 開發者必須要面對的問題,我們不希望不管那些還在用舊版本的用戶,但也希望能使用新 Android 版本中酷炫的功能。最常見的做法是像這樣:
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP){ }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ }
現在讓我們看看 Anko 是怎麼做的:
doIfSdk(Build.VERSION_CODES.LOLLIPOP){ }
doFromSdk(Build.VERSION_CODES.LOLLIPOP){ }
真是簡單又易懂。
處理線程
處理多線程一直都不太容易,但在 Android 開發中我們經常需要面對。在 Anko 中的做法會相當的簡潔:
doAsync {
//IO task or other computation with high cpu load
uiThread {
toast("async computation finished")
}
}
集成 Anko
如果你也心動了,想嘗試一下,可以通過下面的方式來集成 Anko:
ankoVersion = "0.10.1"
dependencies {
compile "org.jetbrains.anko:anko-appcompat-v7-listeners:$ankoVersion"
compile "org.jetbrains.anko:anko-design-listeners:$ankoVersion"
compile "org.jetbrains.anko:anko-design:$ankoVersion"
compile "org.jetbrains.anko:anko-sdk15-listeners:$ankoVersion"
compile "org.jetbrains.anko:anko-sdk15:$ankoVersion"
}
不誇張的說,Anko 可以算是我學習 Kotlin Android 開發的一個重要原因了。
原文鏈接: Why every Android developer should use Anko - Kotlin Development
推薦閱讀: 跨瀏覽器問題的五種解決方案