自定义Toast及动画的二三事
来源:互联网 发布:iptv管理系统源码下载 编辑:程序博客网 时间:2024/05/19 20:46
实际案例中,系统的Toast经常无法满足我们的需求,那么作为开发人员,就难免要去自定义一个我们自己的Toast...
关于Toatst的系统的源码这里不想赘述,因为网上有很多(至少我也是上网查的),但是也仅限于介绍了源码和简陋的Demo....本篇直奔主题,介绍我在项目中真实用到的Toast...
先附上一段别人关于Toast源码的介绍(恩,我也是看的他的,才一步一步改的),链接点击打开链接
那么上面的文章浏览一遍后,大致有个概念了,所谓吐司,就是获得窗口管理器WindowManager,进而去设置LayoutParams的参数,将你想要展示的View挂在WindowManager上,下面上代码(之所以我补上代码,而是图片。是我个人认为在AS上看代码,字体颜色不同,更容易去读懂代码)
初始化Toast的参数,自不必说,该画圈的画圈,该注释的注释
可以看到show方法里是通过handler去post一个Runnable去来控制Toast的(用handler原因,在于发生异常时可以直接移除他的任务)
有show方法,Toast显示完以后自然还有hide方法
hide方法很简单,当需要隐藏时,将wm,view等全部设置为null,并且将handler里的任务全部移除(有可能任务还没执行完就需要hide的情况,否则会发生再次弹出吐司的时候,显示和隐藏的动画时间混乱,无法正常播放的情况)已便下一次显示。
可能会有人问,为什么要设置null啊,多次显示不就多次初始化了吗,但是经我踩过的坑的可得知,Context和这个WindowManager是关联在一起的,我来举一个例子,但你Toast的动画还没结束,当前的Activity就被销毁了,然后当真正动画结束的时候,去触发hide方法的时候,会抛异常,因为你当前的Acitivty和WindowManager毫无关联,于是程序崩溃,那么如何在Activity异常关闭的时候阻止他不抛出异常,我是这么做的
在活动onPause的时候,根据吐司的isShow布尔值去判断当前是否有吐司正在显示,如果正在显示,但是界面又不被显示了,执行hide方法,将参数清空
下面来展示一下Toast的效果..(暂时是截图,到时候上传gif格式的)
------------------------更新于9/7
hide方法必须移除view,否则会出其他的bug(我这发生了toast显示以后,dialog无法显示的问题,移除后正常)
- 自定义Toast及动画的二三事
- Android 带动画的自定义Toast
- Android 更改 Toast 的默认位置及自定义Toast
- 自定义Toast及解决Toast的重复显示问题
- Android之Toast自定义动画
- Toast的动画效果
- Toast工具类及简单自定义Toast
- Toast自定义及源码解析
- 自定义显示的Toast
- 自定义Toast的创建
- 自定义toast的风格。
- Toast的自定义用法
- 自定义Toast的实现
- Android:自定义的Toast
- 自定义Toast的实现
- 自定义toast的使用
- 自定义toast的使用
- 简单的自定义Toast
- Flume日志收集分层架构应用实践
- Git 笔记
- 可引导MBR的利用
- C++ error
- send() recv() 解析(转载)
- 自定义Toast及动画的二三事
- 基于多个MPC的的调度控制器
- codeforces 357div2总结
- 从服务业突然决定转行进入IT界
- 手机网络状态查询工具类
- 序列化二叉树
- hbase 基本命令
- C++中的继承
- Android开发指南--0 总览