Android实现多条Toast快速显示

Toast多用于我们开发人员调试使用,有时候也作为给用户的弱提示使用,我们常用的方法是

Toast.makeText(this, "弹出Toast", Toast.LENGTH_SHORT).show();

那么问题来了,这样实现就会有一个问题,每一条Toast都要显示1S左右的时间,如果调试的Toast较多,能急死

实现Toast显示的时候,中止上一条Toast的显示

有时候就是有这种需求,也可以方便我们的调试

先说一下上一种方式为什么就每个都显示1s左右的时间,因为makeText就是获取一个Toast对象,然后之间show了出来,相当于一个队列,每显示一条,就创建一个对象,在后面显示出来,每个都是一秒,

那么解决方案,就是只用一个Toast对象来显示,然后使用setText方法来设置显示内容,最后show显示出来

private Toast toast = null;
/**
* 弹出Toast(中断正在显示的Toast)
*/
public void showToast(View view) {
if (toast == null) {
toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
}
toast.setText("弹出Toast(中断正在显示的Toast)");
toast.show();
}

工具类(为了方便,可以直接复制粘贴使用)

package googleanalytics.example.com.kqwtoastdemo;

import android.content.Context;
import android.widget.Toast; /**
* Created by kongqw on 2015/9/28.
*/
public class ToastUtile { // 构造方法私有化 不允许new对象
private ToastUtile() {
} // Toast对象
private static Toast toast = null; /**
* 显示Toast
*/
public static void showText(Context context, String text) {
if (toast == null) {
toast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
}
toast.setText(text);
toast.show();
}
}

测试类

package googleanalytics.example.com.kqwtoastdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} /**
* 弹出Toast
*/
public void showToastDefault(View view) {
Toast.makeText(this, "弹出Toast", Toast.LENGTH_SHORT).show();
} private int mShowCount = 0; /**
* 弹出Toast(中断正在显示的Toast)
*/
public void showToast(View view) {
ToastUtile.showText(this, "弹出Toast(中断正在显示的Toast) " + mShowCount++);
}
}

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="showToastDefault"
android:text="弹出Toast" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="showToast"
android:text="弹出Toast(中断正在显示的Toast)" />
</LinearLayout>

效果图

Android实现多条Toast快速显示(强制中止上一条Toast的显示)的更多相关文章

  1. 四条命令快速在Ubuntu16.04上配置DNS服务器

    1. apt install dnsmasq -y 2. vim /etc/dnsmasq.d/resolv.conf address=/xxx.yyy.com/21.xx.xx.x 3. servi ...

  2. 【Android代码片段之六】Toast工具类(实现带图片的Toast消息提示)

    转载请注明出处,原文网址:http://blog.csdn.net/m_changgong/article/details/6841266  作者:张燕广 实现的Toast工具类ToastUtil封装 ...

  3. Android NumberProgressBar:动态移动显示百分比进度的进度条

     Android NumberProgressBar:动态移动显示百分比进度的进度条 NumberProgressBar是github上一个开源项目,其项目主页是:https://github.c ...

  4. Android中ProgressBar的使用-通过Handler与Message实现进度条显示

    场景 进度条效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改为 ...

  5. android一个上传图片的样例,包含怎样终止上传过程,假设在上传的时候更新进度条(一)

    先上效果图: Layout为: <? xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  6. Android移动后端服务(BAAS)快速搭建后台服务器之Bmob-android学习之旅(75)

    个人移动开发者的最头疼的问题,就是App的网络后台,包含数据库等,国外目前有比较成熟的解决方案,但是限制于墙的问题,推荐国内的解决方案,比较出名的是Bmob和AVOS cloud和Atom等,这一次我 ...

  7. Android——对话框1(一般、选择、自定义、进度条)

    xml <Button android:layout_width="match_parent" android:layout_height="wrap_conten ...

  8. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  9. Android 自定义View修炼-自定义View-带百分比进度的圆形进度条(采用自定义属性)

    很多的时候,系统自带的View满足不了我们功能的需求,那么我们就需要自己来自定义一个能满足我们需求的View,自定义View我们需要先继承View,添加类的构造方法,重写父类View的一些方法,例如o ...

随机推荐

  1. [LeetCode] Count Different Palindromic Subsequences 计数不同的回文子序列的个数

    Given a string S, find the number of different non-empty palindromic subsequences in S, and return t ...

  2. [Codeforces 922E]Birds

    Description 题库链接 一条直线上有 \(n\) 棵树,每棵树上有 \(c_i\) 只鸟,在一棵树底下召唤一只鸟的魔法代价是 \(cost_i\) 每召唤一只鸟,魔法上限会增加 \(B\) ...

  3. bzoj1127[POI2008]KUP 悬线法

    Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 485  Solved: 174[Submit][Status][D ...

  4. Python3 sys.argv[ ]的用法解释

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得的参数可以是多个,所以获得的是一 ...

  5. Delphi备忘录——基本语句

    选择语句: 1.If-Then-Else选择语句: If (表达式) Then Begin 语句块; End Else If(表达式) Then Begin 语句块; End; Else Begin ...

  6. Delphi7.0常用函数-属性-事件

    abort 函数 引起放弃的意外处理 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给定字符串的行分 ...

  7. es6新增

    首先要说let,他是只在代码块中执行的变量,例如: {    let a = 10;    var b = 1;}console.log(a);//definedconsole.log(b);//1 ...

  8. 转载:使用Math.floor和Math.random取随机整数

    Math.random():获取0~1随机数 Math.floor() method rounds a number DOWNWARDS to the nearest integer, and ret ...

  9. angular学习笔记 父子组件传值

    一.如何将父组件的值传到子组件? 在子组件里面引入Input,然后用@Input 变量1 接收 接着在父组件中的,子组件标签上添加[msg]="msg",中括号里的名字要与子组件中 ...

  10. Genymotion配置遇到的坑

    1.Genymotion 无法Add下来 解决: ①首先打开Genymotion,的Settings然后找到VirtualBox,复制链接,在本地找到文件夹,然后返回上一层找到ova文件夹进入, ②然 ...