Android實現多條Toast快速顯示(強制中止上一條Toast的顯示)
阿新 • • 發佈:2019-02-12
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>