自定义Toast解决快速点击时重复弹出,排队无止尽
解决办法:自定义MyToast类:
public class MyToast {
    /** 之前显示的内容 */
    private static String oldMsg ;
    /** Toast对象 */
    private static Toast toast = null ;
    /** 第一次时间 */
    private static long oneTime = 0 ;
    /** 第二次时间 */
    private static long twoTime = 0 ;
    /**
     * 显示Toast
     * @param context
     * @param message
     */
    public static void showToast(Context context, String message){
        if(toast == null){
            toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
            toast.show() ;
            oneTime = System.currentTimeMillis() ;
        }else{
            twoTime = System.currentTimeMillis() ;
            if(message.equals(oldMsg)){
                if(twoTime - oneTime > Toast.LENGTH_SHORT){
                    toast.show() ;
                }
            }else{
                oldMsg = message ;
                toast.setText(message) ;
                toast.show() ;
            }
        }
        oneTime = twoTime ;
    }
}
调用就很简单了,在要用的地方:
MyToast.showToast(Activity.this, "获取数据异常"); ============================================手动分割线=============================================
当然,如果你还有修改Toast位置或者样式的需求,就需要自定义自己的Toast
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class NewToast {
private Toast mToast;
private TextView textView; private NewToast(Context context, CharSequence text, int duration) {
View v = LayoutInflater.from(context).inflate(R.layout.eplay_toast, null);
textView = v.findViewById(R.id.textView1);
textView.setText(text);
mToast = new Toast(context);
mToast.setDuration(duration);
mToast.setGravity(Gravity.BOTTOM, 0, 360);//距离底部距离
mToast.setView(v);
} public static NewToast makeText(Context context, CharSequence text, int duration) {
return new NewToast(context, text, duration);
} public void show() {
if (mToast != null) {
mToast.show();
}
} public void setGravity(int gravity, int xOffset, int yOffset) {
if (mToast != null) {
mToast.setGravity(gravity, xOffset, yOffset);
}
} public void setText(String text) {
textView.setText(text);
}
}
所用布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/fillet_blank_back"
android:gravity="center"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="30dp"
android:paddingRight="30dp" > <TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FFFFFF"/> </FrameLayout>
背景drawable是Toast需要的圆角背景图
使用就是在MyToast.class中以下这行Toast修改为NewToast即可
toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
直接用的换也是像Toast一样调用即可。
自定义Toast解决快速点击时重复弹出,排队无止尽的更多相关文章
- 超链接 a 标签点击时,弹出提示框,可以按照如下来写
		
onclick="return confirm('确定删除该条记录?')" 加上这条记录后,就可以在访问href属性指向的链接时,有弹出提示
 - vue封装公用弹出框方法,实现点击出现操作弹出框
		
vue封装公用弹出框方法,实现点击出现操作弹出框 如上图所示,这次要实现一个点击出现操作弹框的效果:并将这个功能封装成一个函数,便于在项目的多个地方使用. 具体思路是: 封装一个组件,组件保护一个插槽 ...
 - Android定位&地图&导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡
		
一.问题描述 上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展示如何使用自定义图标绘制并点击时弹出泡泡 如图所示: 二. ...
 - 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。
		
(转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/lingu ...
 - layer重复弹出(layui弹层同时存在多个)的解决方法
		
layer.open() 同时存在多个;解决 layui 弹层 layer 同时存在多个页面层(iframe)的问题 这个问题其实是疏忽了一些 基础参数(仔细看文档,仔细看文档,仔细看文档) 一.ty ...
 - 联想E440问题:点击鼠标时,弹出“无法连接synaptics定点装置驱动程序”错误
		
笔记本:Levono E440 问题描述: 在控制面板中,点击鼠标时,弹出“无法连接synaptics定点装置驱动程序”错误,如何解决? 即使在安装联想的驱动后,也没办法解决 解决步骤: 1. ...
 - 第一个微信小程序(实现点击一个按钮弹出toast)
		
今天根据网上的教程搭建了微信小程序的环境,然后看文档做了一个简单的小应用. 项目的目录是这个样子的: app.js.app.json.app.wxss是全局文件,必不可少的文件.定义在app.wxss ...
 - 解决IOS safari在input focus弹出输入法时不支持position fixed的问题
		
该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position ...
 - netbeans运行项目时,弹出“cannot be run from folder that contains non-ASCII characters in path”的对话框 解决方法
		
netbeans运行项目时,弹出“cannot be run from folder that contains non-ASCII characters in path”的对话框,原因是项目路径中有 ...
 
随机推荐
- 【转】常用聚类算法(一) DBSCAN算法
			
原文链接:http://www.cnblogs.com/chaosimple/p/3164775.html#undefined 1.DBSCAN简介 DBSCAN(Density-Based Spat ...
 - 屏蔽zencart logs文件夹下不断生成的日志文件
			
在根目錄下的logs文件夾中,經常生成一些錯誤文件類似myDEBUGxxxxx.log這樣的錯誤文件(而且這樣的錯誤文件由來并非網站出現什麽嚴重不可挽救的錯誤,大部分是一些未定義變量這樣的不起眼的小錯 ...
 - IIS部署WCF网站服务步骤
			
一开始在“管理工具”下找不到IIS的快捷方式,是因为系统默认未打开IIS功能,所以首先打开IIS功能: 为避免出现未知的麻烦,建议将IIS下的所有项都勾上: 创建IIS桌面快捷方式: 添加网站托管: ...
 - IT求职中,笔试、面试的算法准备
			
PS:此文章为转载,源地址:http://www.newsmth.net/nForum/#!article/CoderInterview/849 作者应该是在美国进行的笔试面试,感觉面试的的公 ...
 - MySql学习 (一) —— 基本数据库操作语句、三大列类型
			
注:该MySql系列博客仅为个人学习笔记. 在使用MySql的时候,基本都是用图形化工具,如navicat.最近发现连最基本的创建表的语法都快忘了... 所以,想要重新系统性的学习下MySql,为后面 ...
 - nodeType的意思
			
nodeType是用来获得当前节点对象的类型.nodeType 属性可返回节点的类型.元素element 1 属性attr 2 文本text 3 注释comments 8 ...
 - EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(六)
			
前言 在接下来的篇幅里将对系统的模块功能进行编写.主要以代码实现为主.这一篇我们需要完成系统模块“角色管理”的相关功能.完成后可以对系统框架结构有进一步了解. Abstract层 之前说过,Abstr ...
 - 在windows 10中使用pip安装psutil 4.3.0
			
环境版本:windows + python 2.7/3.5共存 使用的python是使用exe安装的,默认已经有pip并确保PATH设置正确,默认安装psutil 4.3.0 1:使用cmd安装2.7 ...
 - 执行最慢的SQL语句
			
---执行最慢的SQL语句SELECT top 20(total_elapsed_time / execution_count)/1000 N'平均时间ms',total_elapsed_time/1 ...
 - WebApi系列~基于RESTful标准的Web Api
			
微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...