翻译自: 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表示结果
网友评论