Anko 初体验

2017年Google IO 大会宣布 Kotlin 为 Android 开发一级语言,近两年 Google IO大会上,Google 不断的支持Kotlin ,成了很多人的期待。 用了一段时间Kotlin,感觉特别简洁,快速,能避免很多模板代码,提升开发效率。

1、Anko

开源地址: https://github.com/Kotlin/anko
Anko 是 JetBrains开发的一个Android 开发框架,帮助Android 开发者方便,快速 ,见到,高效 开发Android应用程序。包括以下部分:

  1. Anko Commons 封装了一些基础操作,例如 intent,dialog,toast,sankbar,log等
  2. Anko Layouts 类型安全,快速编写Android布局
  3. Anko SQLite 更方便的操纵 Android SQLite
  4. Anko Coroutines 基于kotlin协程库,方便执行后台耗时操作,优雅的切换到主线程

1.1 使用

添加依赖

//project gradle 文件
ext.anko_version='0.10.8'
//moudle gradle 文件
dependencies {
    implementation "org.jetbrains.anko:anko:$anko_version" //包括上面描述的四部分
}

如果只需要部分特性,可以这样依赖:

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"
}

下面分别介绍这几个功能:

2、Anko Commons

2.1 Intents

开启一个Activity

startActivity(intentFor()) 

开启一个Activity 传递数据:

startActivity("id" to 5)
//传递数据设置启动模式
startActivity(intentFor("id" to 5).singleTop())

//传递多个数据
startActivity(
    "id" to 5,
    "city" to "Denpasar"
)

Anko封装的一些操作:
Anko 初体验_第1张图片

2.2 Dialogs and toasts

弹出 toast:

toast("Hi there!")
toast(R.string.message)
longToast("Wow, such duration")

弹出 Snackbar

view.snackbar("Hi there!")
view.snackbar(R.string.message)
view.longSnackbar("Wow, such duration")
view.snackbar("Action, reaction", "Click me!") { doStuff() }

Android 默认dialog

alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
    yesButton { toast("Oh…") }
    noButton {}
}.show()

Android Appcompat 中AlertDialog :

alert(Appcompat, "Some text message").show()

自定义Dialog :

alert {
    customView {
        editText()
    }
}.show()

包含列表的Dialog:

val countries = listOf("Russia", "USA", "Japan", "Australia")
selector("Where are you from?", countries, { dialogInterface, i ->
    toast("So you're living in ${countries[i]}, right?")
})

Progress dialogs

val dialog = progressDialog(message = "Please wait a bit…", title = "Fetching data")
indeterminateProgressDialog()

2.3 Logging;

class SomeActivity : Activity(), AnkoLogger {
    private fun someMethod() {
        info("London is the capital of Great Britain")
        debug(5) // .toString() method will be executed
        warn(null) // "null" will be printed
    }
}

Anko 初体验_第2张图片

3、Anko Layouts

XML 写布局的方式依然是常态,感兴趣的可以看看:https://github.com/Kotlin/anko/wiki/Anko-Layouts

4、Anko SQLite

感兴趣的可以看看这个:https://github.com/Kotlin/anko/wiki/Anko-SQLite

5、Anko Coroutines

Anko Coroutines 封装了后台操作的过程,方便前后台线程转换。

import org.jetbrains.anko.doAsync
import org.jetbrains.anko.support.v4.UI

        doAsync { 
            //在这里执行后台耗时操作
            UI { 
                //在这里切换回主线程
            }
        }

方便优雅

6、总结

使用Kotlin + Anko 将毕设重写完之后,感觉开发效率能高很多,写的也非常舒服。但是Kotlin也有一些坑,需要注意,比如,延迟加载的对象不能直接判空,首先先要判断是否被初始化。
这次体验先到这里吧,后面再深入研究Kotlin。

你可能感兴趣的:(Android)