爲何 Android 開發者都應該嘗試一下 Anko?

簡評: 這裏介紹的僅僅是 Anko 中很小的一部分,Kotlin + Anko 真的讓 Android 開發簡化了很多,用了 Anko 基本就能夠告別那些什麼 Android 不得不知的代碼收集貼了。

Anko 是 JetBrains 針對 Kotlin 推出的 Android 開發庫,其目的是經過 Kotlin 讓 Android 開發更加簡單。java

Anko 主要有四個模塊:瀏覽器

  • Commons
  • Layouts
  • SQLite
  • Coroutines

在這篇文章中,咱們先主要介紹其 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
推薦閱讀: 跨瀏覽器問題的五種解決方案

相關文章
相關標籤/搜索