上一篇,介绍了Anko框架的DSL功能。其中用到了toast,本篇主要介绍一些常用的方法。

详细文档可以参考这里

好了,下面开始扯了.

Intents

makeCall(number) 可以调用拨号,直接传入号码 不需要加tel:

browse(url) 通过浏览器打开指定网页

startActivity(intentFor<SomeOtherActivity>("id" to 5).singleTop()) 跳转到指定activity并且通过Intent传入id为5的值。singleTop()等价于intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)

如果没有需要传值什么的可以简单的写成这样即可
startActivity<SecondActivity>()


Fragment

SomeFragment().withArguments(
    "id" to 5,
    "name" to "John") fragment可以通过这样的方式传值


services

通常我们在JAVA的使用中,我们是通过这样的方式获取到一个服务

(NotificationManager) getSystemService(Context.LAYOUT_INFLATER_SERVICE)

Anko帮我们封装了一些常用的service,我们可以直接调用。notificationManager,displayManager,sensorManager,vibrator,layoutInflater


Toast

toast("Hi there!") //直接输出字符串
toast(R.string.message) //也可以引用资源
longToast("Wow, such a duration")//显示时间较长的Toast


Alert

//通过这样的代码可以快速的创建一个对话框
alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
    positiveButton("Yes") {toast("Oh…")}
    negativeButton("No") {}
}.show() 

//可以通过这样的方式自定义dialog的view
alert {
    customView {
        editText()
    }
}.show()


Selector Alerts

//通过这样的方式可以方便的创建一个列表选择对话框
val countries = listOf("Russia", "USA", "Japan", "Australia")
selector("Where are you from?", countries) { i ->
    toast("So you're living in ${countries[i]}, right?")
}

AsyncTask

//我们可以通过这样的方式方便的创建一个异步线程
async {
    // Long background task
    uiThread {
        result.text = "Done"
    }
}

//如果使用线程池也可以很方便的实现
val executor = Executors.newScheduledThreadPool(4)
async(executor) {
    // Some task
}

差不多就是这些了,这些封装可以有效的减少我们的代码量,让整个工程更加精简。

具体wiki可以查看这里

同时更加复杂的Anko框架使用可以参考这个例子

由于Kotlin正在发展,Anko的变动也比较大,现在Anko的一些写法和我之前刚刚接触Anko已经有很多地方不同了,所以如果在使用过程中遇到问题,可以去Anko提issue,或者上stackoverflow提问。

Anko的简单介绍到这里差不多就结束了,要想掌握和熟练使用还是得多花些时间练习。

下一篇,将介绍Kotlin和Java的相互调用。

4 0

共收到0条回复

加入小组与大家一起讨论吧