美文网首页
Anko - 系列 - Anko Commons

Anko - 系列 - Anko Commons

作者: ZHDelete | 来源:发表于2018-12-04 19:48 被阅读11次

    翻译自: Anko Github 主页
    Kotlin/anko(https://github.com/Kotlin/anko)


    Anko Common

    Anko Commons 是一个android开发者的工具箱,这个库里包含了许多基于Andoird SDK里原生方法封装的工具方法,包括但不限于如下:

    1: Intent

    对Intent 的封装,是在Anko 的 anko-commons模块里,如果想只依赖commons这部分功能,在module的build.gradle脚本中,加入如下依赖即可:

    dependencies {
        implementation "org.jetbrains.anko:anko-commons:$anko_version"
    }
    
    • 使用方法:
      传统的写法是:
    val intent = Intent(this, SomeOtherActivity::class.java)
    intent.putExtra("id", 5)
    intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)
    startActivity(intent)
    

    anko-common的写法:
    如果需要设置要启动的Activity的FLAG,那么要如下写法:

    startActivity(intentFor<SomeOtherActivity>("id" to 5).singleTop())
    

    其中参数是:若干Pair对象,也即我们要传递的key-value数据

    如果不需要设置Activity的启动Flag,则写法如下

    startActivity<CommonsActivity>("id" to 5)
    

    注意,此时的startActivity<T>不再是Activity类里的方法,而是anko里对Context的扩展方法了

    如果要传递多对数据,写法如下:

    startActivity<CommonsActivity>(
                    "id" to 5,
                    "city" to "Denpasar"
                )
    

    以上内容封装在Intents.kt类里,包名是:org.jetbrains.anko,通过阅读代码,可以发现,内部实现,还说中规中矩的原生Android SDK相应的写法

    此外,对于一些Android系统内常有Intent,anko也做了很好的封装:

    目的 写法
    拨打电话 makeCall(number),无需自己再拼接tel:num
    发短信 sendSMS(number,[text]),不需要再:Uri.parse("sms:xxx")
    浏览器打开 browse(url)
    分享文字 share(text,[subject]
    发邮件 email(email,[subject],[text])

    上述方法中,可选参数军用[]括起来了,而且,如果Intent被发送成功,各个方法还会返回true表示结果

    相关文章

      网友评论

          本文标题:Anko - 系列 - Anko Commons

          本文链接:https://www.haomeiwen.com/subject/rrfafqtx.html