这次接到交互的需求是,自下而上弹出一个Toast,持续4秒,渐隐消失(动画效果很简单,我就不贴代码了)。开发android的童鞋们都知道,Toast的duration时间只有Toast.LENGTH_LONG和Toast.LENGTH_SHORT,如果需要持续4秒,并且弹出、消失还要带着一些动画效果,那我只能自定义一个Toast了。
以下的R.layout.toast_custom你可以做成你需要的布局,可以携带图片的,可以只是文字的…
话不多说,直接上代码了。
因为我们的需求中在跳转到新的页面的时候,即使Toast没执行完,也要取消它,所以在onPause()方法中,我调用了这个cencel()。
调用方式如下:
到此,我本以为会是一个完美的Ending…
But,上述方法可能在小米的手机中失效,addView完全没有效果,那是因为小米手机默认关闭了悬浮窗的提示。
打开手机的设置-应用-找到该应用-权限-显示悬浮窗。
这样再去看看你自定义Toast的位置,应该就会弹出Toast了吧。有人可能会问,大部分的用户都会使用手机的默认权限,我们如果在代码里该怎么控制悬浮窗的开启?如果小米能让你用代码控制,就不会限制悬浮窗的使用了。但是你还可以用代码控制去打开权限页,让用户手动去开启这个悬浮窗的权限还是可以的。
我们的需求不允许这么做,控制权限在这篇文章里就不做过多的叙述了。大家应该能看出来我已经尽力了,我又不能根据不同的手机,在代码里做不同的逻辑来展示自定义的Toast。所以只能去砍交互的需求,最后达成一致的需求是,Toast持续3秒,按照原生Toast的动画效果来弹。根据UI设计的位置、形状、背景色以及文字的颜色和大小来展示。所以就有了如下的修改:
没错,只是去掉了持续4秒,和弹出、消失的动画效果,代码量就从一个类,减少到7行。
如需转载,请注明出处:YauLam’s Blog,thank u~