Anko开发之——Anko Commons

前言

最近的事情有点多,继上一篇Anko初探有一段时间了,本文将继续更新用Anko开发Android相关教程;关于Anko网上的资源有限,大部分是查看官网说明一点点摸索的,有需求的请查看官方地址:Anko,作者水平有限,难免有疏漏之处。欢迎留言探讨。

本文将介绍Anko的第一部分——Anko组件,分以下四部分讲解:

  • Intents
  • Dialogs and toasts
  • Logging
  • Resources and dimensions

Anko组件

环境配置

在项目下的build.gradle中添加anko和kotlin支持

buildscript 
{
    ext.kotlin_version = '1.2.20'
    ext.anko_version='0.10.4'
    repositories 
    {
        google()
        jcenter()
    }
    dependencies 
    {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects 
{
    repositories 
    {
        google()
        jcenter()
    }
}

task clean(type: Delete) 
{
    delete rootProject.buildDir
}

在app的build.gradle下添加模块类库

//log
compile "org.jetbrains.anko:anko:$anko_version"
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
// Anko Commons
compile "org.jetbrains.anko:anko-commons:$anko_version"
compile "org.jetbrains.anko:anko-design:$anko_version" // For SnackBars
// Anko Layouts
compile "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
compile "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
// Coroutine listeners for Anko Layouts
compile "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
compile "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"
// Anko SQLite
compile "org.jetbrains.anko:anko-sqlite:$anko_version"
//Anko Coroutines
compile "org.jetbrains.anko:anko-coroutines:$anko_version"

添加anko-support插件

Anko组件——Intents

检查依赖

使用本组件需要添加依赖支持,请检查环境配置中的步骤2,是否有下面的依赖库

compile "org.jetbrains.anko:anko-commons:$anko_version"

Intent一般开发

使用Intent跳转和传值

startActivity<SecondActivity>("id" to "5")

接收传值

text ="通过传值获得内容为:"+ui.owner.intent.extras.get("id")

效果

Intent简易使用

使用anko帮我们封装好的intent,简化开发步骤

简易开发介绍

  • Make a call(打电话): makeCall(number) without tel:
  • Send a text(发短信):sendSMS(number, [text]) without sms:
  • Browse the web(浏览网页):browse(url)
  • Share some text(分享文字):share(text, [subject])
  • Send a email(发邮件):email(email, [subject], [text])

效果

Anko组件——Dialogs and toasts

检查依赖

使用本组件需要添加依赖支持,请检查环境配置中的步骤2,是否有下面的依赖库

compile "org.jetbrains.anko:anko-commons:$anko_version"
compile "org.jetbrains.anko:anko-design:$anko_version" // For SnackBars

Dialogs and toasts

Toasts

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

SnackBars

使用时会有如下错误:

can't access class 'android.support.design.widget.Snackbar',check your module classpath for missing or conflicting dependencies

有知道原因的小伙伴可以私信或给我留言

Alerts(对话框)

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

Selectors(复选框)

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(进度条)

val dialog = progressDialog(message = "Please wait a bit…", title = "Fetching data"){
           isIndeterminate=true
      }
dialog.show()

效果图

Anko组件——Logging

日志组件,比较简单

检查依赖

使用本组件需要添加依赖支持,请检查环境配置中的步骤2,是否有下面的依赖库

compile "org.jetbrains.anko:anko-commons:$anko_version"

直接上效果图

Anko组件——Resources and dimensions

检查依赖

使用本组件需要添加依赖支持,请检查环境配置中的步骤2,是否有下面的依赖库

compile "org.jetbrains.anko:anko-commons:$anko_version"

Resources and dimensions

Colors

Dimensions

使用dp或sp标明属性的大小

lparams

view后跟lparams对view的属性进行描述

其他

参考: Github下载地址