前言
Android各家定制的系统Toast ui都不一样,而且很简单,之前使用只是简单的封装了一个工具类使用,后来看到Lottie之后想着做一个好看点的Toast,所以就抽空好好写了一下。
ToastBox是一个自定义吐司库,可以实现多种自定义toast,有WindowsManger和系统Toast两种实现方式,配合Lottie动画库可以做一些好看的toast
Github上关于Toast的工具很多了,但我就是喜欢造轮子哈哈哈
实例:
ToastBox可以实现自定义View、显示时长、显示位置、各种自定义风格,我这里写了几个常用的Toast,比如网络错误、操作成功、信息、失败等,静态图:
一些有意思的toast:
success:
fail:
网络错误:
普通信息:
普通的toast:
关于LottieToast的演示,可以查看:LottieActivity
Lottie中有很多看好的动画,你也可以自己设计一个。
实现:
具体实现可以看代码,这里不详细介绍了
-
一共有两种toast实现,一是系统toast,二是windows实现,各有好坏,调用的时候可以灵活配置
-
在Application中需要初始化,利用ActivityLifecycleCallbacks用来监听activity生命周期,避免内存泄漏。
快速接入:
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.xluu233:ToastBox:${version}'
}
使用:
stetup1: 在Application中初始化
ToastBoxRegister.init(this)
初始化时可以配置一些参数
ToastBoxRegister.init(this).apply {
//text样式:白色和灰色
textStyle = TextStyle.White
//可以设置默认显示图标
defaultIcon = R.drawable.ic_launcher_background
//设置默认动画
animStyle = R.style.xxx
}
setup2:简单调用
ToastBox(this).show("This is ToastBox")
更多参数设置
//正常使用
ToastBox().show("This is ToastBox")
//在不同的位置弹出
ToastBox().setLocation(Location.TOP).show("TOP ToastBox")
ToastBox().setLocation(Location.CENTER).show("Center ToastBox")
ToastBox().setLocation(Location.BOTTOM).show("Bottom ToastBox")
//修改透明度
ToastBox().setLocation(Location.CENTER).setAlpha(0.5f).show("Center ToastBox")
//自定义布局,传入View或者layout
ToastBox().setView(R.layout.custom_toast_common_1).show("This is Custom View",5000L)
//设置toast时间
ToastBox().show("5000L",duration = 5000)
//设置xy必须在设置location后面
ToastBox().setLocation(Location.BOTTOM).setXY(100,200).show("Center ToastBox")
//设置监听
ToastBox().setListener(object : ToastClickItf{
override fun setOnToastDismissed() {
xLog.d(TAG,"toast dismissed")
}
}).show("哈啊啊啊啊啊哼哼",3000L)
//不同风格的toast
ToastBox().setTextStyle(TextStyle.GRAY).show("灰色Toast")
ToastBox().setTextStyle(TextStyle.White).setXY(0,300).show("白色Toast")
ToastBox().setTextStyle(TextStyle.Black).setXY(0,600).show("黑色Toast")
//设置动画
ToastBox().setAnim(R.style.MiuiToast).show("切换弹出动画")
//自定义图标
ToastBox().setIcon(R.drawable.icon).show("This is ToastBox")
附上项目地址:github.com/xluu233/Toa…
卑微Androider求一个Star