Android实现多条Toast快速显示(强制中止上一条Toast的显示)

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的显示)

上一篇:贪心算法解决部分背包问题(C语言,ruby)


下一篇:高并发系统三大利器之降级