##用dialog实现一个全局可自定义toast
最近有一个变态需求,做一个toast,可以点击后消失,可以在使用的时候分情况设置位置,颜色,大小。额,你确定这是我熟悉的Android的toast?光是可以点击消失就让我明白什么toast.setView()来自定义一个Toast啥的就是痴心妄想。好吧,想了想还是只有把dialog伪装一下,任重道远啊!
dialog进化为toast有几个有下面几个步骤:
- 去掉dialog的标题栏
- 背景色可以自定义
- 显示时间可以进行设定
- 出现位置可以自定义
- 可以设置大小
看起来事情多,挺麻烦的,一步步来。
去掉标题栏直接调用 requestFeature(WINDOWS_NO_TITLE) 就可以了。
设置 timeout 只需要用Handler来处理就可以了。
背景色,位置,大小都和dialog所在的window有关,要用 getWindow()来设置。
1 | //先去掉dialog的标题栏 |
这样一写,发现基本的UI都写好了,但是怎么做到让它在Activity跳转后依然显示,并且显示的时候不阻挡页面上其他组件的触摸行为就比较难了。
1 | /** |
似乎忘了toast最重要的timeout了,因为这个类是继承的Dialog,那么重写show就可以你,代码摆起:
1 | private final Handler mHandler = new Handler(); |
基本上代码这块就好了,大小,位置,背景色也可以想timeout一样,有需要的话给个set方法就搞定。最后贴上layout xml
1 |
|