自定义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”的对话框,原因是项目路径中有 ...
随机推荐
- 关于BP网络的一些总结
背景 前段时间,用过一些模型如vgg,lexnet,用于做监督学习训练,顺带深入的学习了一下相关模型的结构&原理,对于它的反向传播算法记忆比较深刻, 就自己的理解来描述一下BP网络. 关于BP ...
- Right Here Waiting
俺不会和小时候一样,因为别人听,自己就不听了^^
- FPGA图像处理 两路sensor的色调不一致
怎么调?可以让两路sensor的色调一致.
- biweb后台添加上传下载功能
1.数据库对应表添加字段 file varchar(100) 2.对应的后台 模块名/admin/addinfo.php里添加如下代码: //文件上传 if ((($_FILES[&quo ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- a 标签中调用js的几种方法 文章摘自他人
我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题 ...
- YY前端课程4
1. CSS和HTML一样,也是标记语言 2. CSS有三种样式:嵌入样式.内部样式(行内样式)和外部样式(外部样式表) 3. CSS的语法:选择器+{一个或多个样式} 4. 选择器是为了找到html ...
- @Transactional 事务管理
全面分析 Spring 的编程式事务管理及声明式事务管理 事务传播行为 所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为.在Tra ...
- WPF中Grid布局
WPF中Grid布局XMAl与后台更改,最普通的登录界面为例. <Grid Width="200" Height="100" > <!--定义 ...
- MYSQL获取自增ID的四种方法
MYSQL获取自增ID的四种方法 1. select max(id) from tablename 2.SELECT LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与tabl ...