自定义一个类,封装Toast:
public class CustomToast {
public static final int LENGTH_MAX = -1;
private boolean mCanceled = true;
/**
* @category 判断runnable 是否正在运行
*/
private Handler mHandler;
private Context mContext;
private Toast mToast;
public CustomToast(Context context) {
this(context, new Handler());
}
public CustomToast(Context context, Handler h) {
mContext = context;
mHandler = h;
mToast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT);
mToast.setGravity(Gravity.CENTER, 0, 0);
}
public void show(int resId, int duration) {
mToast.setText(resId);
if (duration != LENGTH_MAX) {
mToast.setDuration(duration);
mToast.show();
} else if (mCanceled) {
mToast.setDuration(Toast.LENGTH_LONG);
mCanceled = false;
showUntilCancel();
}
}
/**
* @param text
* 要显示的内容
* @param duration
* 显示的时间长 根据LENGTH_MAX进行判断 如果不匹配,进行系统显示 如果匹配,永久显示,直到调用hide()
*/
public void show(String text, int duration) {
mToast.setText(text);
if (duration != LENGTH_MAX) {
mToast.setDuration(duration);
mToast.show();
} else {
if (mCanceled) {
mToast.setDuration(Toast.LENGTH_LONG);
mCanceled = false;
showUntilCancel();
}
}
}
/**
* 隐藏Toast
*/
public void hide() {
mToast.cancel();
mCanceled = true;
}
public boolean isShowing() {
return !mCanceled;
}
//如果mCanceled为false,一直弹吐司
private void showUntilCancel() {
if (mCanceled)
return;
mToast.show();
mHandler.postDelayed(new Runnable() {
public void run() {
showUntilCancel();
}
}, 1000);
}
}
调用步骤:
1:初始化吐司:CustomToast customToast = new CustomToast(context);
2:显示吐司:customToast.show("我是不会消失的吐司", -1); //第二个参数设置成-1
3:关闭吐司:
if (customToast.isShowing()) {
customToast.hide();
}
注意点:
关闭吐司再次显示时,时间间隔应大于一秒