先上图
效果全部为原生Toast,通过添加自定义view实现
class KtToast internal constructor(context: Context, view: View) {
private val toast = Toast(context)
init {
toast.view = view
}
fun gravity(gravity: Int, xOffset: Int = 0, yOffset: Int = 0): KtToast {
toast.setGravity(gravity, xOffset, yOffset)
return this
}
fun duration(duration: Int): KtToast {
if (duration != 0 && duration != 1) toast.duration = 1
else toast.duration = duration
return this
}
fun show() {
toast.show()
}
}
开会看到Toasty挺好的,直自己用Kotlin写了一个,加上一些动画
布局没有使用anko,还是使用了xml,主要一开始的时候使用的时候出现了些问题,导致后来直接用xml
// custom layout
fun Activity.layoutToast(@LayoutRes layoutRes: Int, init: View.() -> Unit,ktToastInit: KtToast.() -> KtToast = { this }) {
val view = this.layoutInflater.inflate(layoutRes, null)
view.init()
KtToast(this, view).ktToastInit().show()
}
- layoutRes: 布局文件id
- init:对布局文件中的View的一些初始化函数
- ktToastInit:对Toast的设置,位置,时长
动画的开始时在View attach 开始的时候
借助接口OnAttachStateChangeListener