1. 程式人生 > >Android實現多條Toast快速顯示(強制中止上一條Toast的顯示)

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>

效果圖

這裡寫圖片描述