Toast
在 Java
下的封装一般都是定义一个工具类并将其设置为静态方法直接去调用但是我们可以使用Kotlin
的扩展函数对此方法进行进一步封装使其看起来更为简洁
下面看一下简单的Toast封装
//设置为String的扩展函数只要是String类型就可以直接使用 "".showToast()的格式
//但是这样封装不能过把之前的message顶掉影响使用
fun String.showToast(duration: Int = Toast.LENGTH_SHORT){
//MyApplication 这是一个直接获取全局context的类
Toast.makeText(MyApplication.context,this,Toast.LENGTH_SHORT).show()
}
下面对Toast进行稍微改动
//下面引入一个全局Application类
class MyApplication : Application() {
companion object {
lateinit var context: Context
lateinit var toast: Toast
}
override fun onCreate() {
super.onCreate()
context = applicationContext
//直接在此处获取一个toast对象
toast = Toast.makeText(applicationContext,"",Toast.LENGTH_SHORT)
}
}
//同上定义为String类的扩展方法
fun String.showToast(duration: Int = Toast.LENGTH_SHORT){
MyApplication .toast.setText(this)
MyApplication .toast.duration = duration
MyApplication .toast.show()
}
//例如在onClick事件使用
btn_scale.setOnClickListener {
//count 是一个计数器为了直观看出Toast是可以直接显示信息不用等待的
//如果要设置其显示时常直接传入即可 如下所示
"show message ${count++}".showToast(Toast.LENGTH_LONG)
}