封装一个好看的吐司框架

Posted by 卢小胖 on 2021-08-13
Estimated Reading Time 3 Minutes
Words 736 In Total
Viewed Times

前言

Android各家定制的系统Toast ui都不一样,而且很简单,之前使用只是简单的封装了一个工具类使用,后来看到Lottie之后想着做一个好看点的Toast,所以就抽空好好写了一下。

ToastBox是一个自定义吐司库,可以实现多种自定义toast,有WindowsManger和系统Toast两种实现方式,配合Lottie动画库可以做一些好看的toast

Github上关于Toast的工具很多了,但我就是喜欢造轮子哈哈哈

实例:

ToastBox可以实现自定义View、显示时长、显示位置、各种自定义风格,我这里写了几个常用的Toast,比如网络错误、操作成功、信息、失败等,静态图:

普通的toast:

一些有意思的toast:

success:

fail:

网络错误:

普通信息:

网络错误:

关于LottieToast的演示,可以查看:LottieActivity

Lottie中有很多看好的动画,你也可以自己设计一个。

Lottie动画
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")

附上项目地址:https://github.com/xluu233/ToastBox
卑微Androider求一个Star

相关文章:
写一个MVVM快速开发框架(一)基础类封装
写一个MVVM快速开发框架(二)组件化改造