簡評: 這裏介紹的僅僅是 Anko 中很小的一部分,Kotlin + Anko 真的讓 Android 開發簡化了很多,用了 Anko 基本就能夠告別那些什麼 Android 不得不知的代碼收集貼了。
Anko 是 JetBrains 針對 Kotlin 推出的 Android 開發庫,其目的是經過 Kotlin 讓 Android 開發更加簡單。java
Anko 主要有四個模塊:瀏覽器
在這篇文章中,咱們先主要介紹其 Commons 模塊中的一些內容:多線程
首先,View.setOnClickListener 方法能夠說是廣大 Android 開發者寫得最多的方法之一了,若是你是用 Kotlin,那麼代碼看起來應該是相似這樣的:app
button.setOnClickListener(object : View.OnClickListener{ override fun onClick(v: View) { } })
經過使用 Anko 能夠把代碼縮減爲:async
button.onClick { }
Intentide
當咱們但願跳轉到新的 Activity 時,代碼相似這樣:學習
val intent = Intent(this, MainActivity::class.java) intent.putExtra("id", 5) intent.putExtra("name", "John") startActivity(intent)
而經過 Anko:ui
startActivity<mainactivity>("id" to 5, "name" to "John")
Anko 還封裝了一些經常使用的功能,讓咱們無需定義 Intent:this
browse("https://makery.co") share("share", "subject") email("hello@makery.co", "Great app idea", "potato")
尺寸的單位問題idea
經過 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
推薦閱讀: 跨瀏覽器問題的五種解決方案