Android默认ToastAndroid默认Toast只是一个简单的黑框框,有时觉得太单调了,不如自己实现一套较精致,不一样的Toast。
先看下效果(动图可能有点大):
前四个是不同类型的Toast,第五个是个loading框。它们两者实现方式不同,分别进行讲解
不一样的Toast
Toast其实并不一定要是在底部弹出的黑色小框框,它也自定义不同的样式
自定义显示位置
toast的显示位置可以通过 方法setGravity(int gravity, int xOffset, int yOffset)来设置,
参数1是位置有Gravity.BOTTOM,Gravity.CENTER,Gravity.CENTER_HORIZONTAL等,参数2,3是相对于x轴,y轴的偏移量,单位为pix,如果想设置为一定数量dp,可以用以下方法将dp转换为pix
或者
比如来显示一个相对于屏幕中心x偏上100pix的toast
加个图标
|
|
完全自定义
|
|
toast.xml
效果就是开头动图里面前四种
同样式的loading
loading框的话显示时间不固定,不能用toast来实现,应为它只能显示1.5s或3s,那就用dialog来实现它,这里有一点要注意,就是背景如何做到半透明,并且大小合适
AVLoadingIndicatorView 是一个loadingView的开源库,有多种样式,这里随机获取一种https://github.com/81813780/AVLoadingIndicatorView
toast_loading.xml
然而出来的效果
这这效果。。。背景还是纯白,宽度不是wrap_content。这里需要自己写个dialog的theme,如下
然后在创建AlertDialog.Builder时传进去
再看效果
封装类