import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.laitoon.app.R;
import com.laitoon.app.app.BaseApplication;
/**
* Toast 工具類
* 解決Toast連續出現要等前一個時間到
* 再顯示下一個的延遲現象
*
* @author DB
*/
public class ToastUtil {
private static Toast mToast;
private static Toast mImgToast;
/**
* @param message
* @param duration
* @return
*/
private static Toast initToast(CharSequence message, int duration) {
if (mToast == null) {
mToast = Toast.makeText(BaseApplication.getAppContext(), message, duration);
} else {
mToast.setText(message);
mToast.setDuration(duration);
}
return mToast;
}
/**
* 短時間顯示Toast
*
* @param message
*/
public static void showShort(CharSequence message) {
//initToast(message, Toast.LENGTH_SHORT).show();
initToast2(message);
}
private static Toast initToast2(CharSequence message) {
if (mImgToast == null) {
mImgToast = new Toast(BaseApplication.getAppContext());
}
View view = LayoutInflater.from(BaseApplication.getAppContext()).inflate(R.layout
.new_toast_custom, null);
TextView tv = view.findViewById(R.id.tv_toast);
tv.setText(TextUtils.isEmpty(message) ? "" : message);
mImgToast.setView(view);
mImgToast.setGravity(Gravity.CENTER, 0, 0);
mImgToast.setDuration(Toast.LENGTH_LONG);
mImgToast.show();
return mImgToast;
}
/**
* 短時間顯示Toast
*
* @param strResId
*/
public static void showShort(int strResId) {
initToast(BaseApplication.getAppContext().getResources().getText(strResId), Toast
.LENGTH_SHORT).show();
}
/**
* 長時間顯示Toast
*
* @param message
*/
public static void showLong(CharSequence message) {
initToast(message, Toast.LENGTH_LONG).show();
}
/**
* 長時間顯示Toast
*
* @param strResId
*/
public static void showLong(int strResId) {
initToast(BaseApplication.getAppContext().getResources().getText(strResId), Toast
.LENGTH_LONG).show();
}
/**
* 自定義顯示Toast時間
*
* @param message
* @param duration
*/
public static void show(CharSequence message, int duration) {
initToast(message, duration).show();
}
/**
* 自定義顯示Toast時間
*
* @param context
* @param strResId
* @param duration
*/
public static void show(Context context, int strResId, int duration) {
initToast(context.getResources().getText(strResId), duration).show();
}
/**
* 顯示有image的toast
*
* @param tvStr
* @param imageResource
* @return
*/
public static Toast showToastWithImg(final String tvStr, final int imageResource) {
if (mImgToast == null) {
mImgToast = new Toast(BaseApplication.getAppContext());
}
View view = LayoutInflater.from(BaseApplication.getAppContext()).inflate(R.layout
.toast_custom, null);
TextView tv = view.findViewById(R.id.toast_custom_tv);
tv.setText(TextUtils.isEmpty(tvStr) ? "" : tvStr);
ImageView iv = view.findViewById(R.id.toast_custom_iv);
if (imageResource > 0) {
iv.setVisibility(View.VISIBLE);
iv.setImageResource(imageResource);
} else {
iv.setVisibility(View.GONE);
}
mImgToast.setView(view);
mImgToast.setGravity(Gravity.CENTER, 0, 0);
mImgToast.show();
return mImgToast;
}
public static Toast showToastWithImgAndSuc(final String tvStr) {
if (mImgToast == null) {
mImgToast = new Toast(BaseApplication.getAppContext());
}
View view = LayoutInflater.from(BaseApplication.getAppContext()).inflate(R.layout
.toast_custom_suc, null);
TextView tv = view.findViewById(R.id.toast_custom_tv);
tv.setText(TextUtils.isEmpty(tvStr) ? "" : tvStr);
mImgToast.setView(view);
mImgToast.setGravity(Gravity.CENTER, 0, 0);
mImgToast.setDuration(Toast.LENGTH_LONG);
mImgToast.show();
return mImgToast;
}
public static Toast showErrorToast() {
if (mImgToast == null) {
mImgToast = new Toast(BaseApplication.getAppContext());
}
View view = LayoutInflater.from(BaseApplication.getAppContext()).inflate(R.layout
.toast_custom, null);
TextView tv = view.findViewById(R.id.toast_custom_tv);
tv.setText(BaseApplication.getAppContext().getResources().getString(R.string.error_toast));
ImageView iv = view.findViewById(R.id.toast_custom_iv);
iv.setImageResource(R.mipmap.general_icon_place);
mImgToast.setView(view);
mImgToast.setGravity(Gravity.CENTER, 0, 0);
mImgToast.show();
return mImgToast;
}
public static void showNormalDialog(Context mContext, String msg) {
final AlertDialog.Builder normalDialog =
new AlertDialog.Builder(mContext);
normalDialog.setIcon(R.mipmap.ic_launcher);
normalDialog.setTitle("溫馨提示:");
normalDialog.setMessage(msg);
normalDialog.setNegativeButton("關閉",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//...To-do
}
});
// 顯示
normalDialog.show();
}
public static Toast showNorToast(final String tvStr) {
if (mImgToast == null) {
mImgToast = new Toast(BaseApplication.getAppContext());
}
View view = LayoutInflater.from(BaseApplication.getAppContext()).inflate(R.layout
.new_toast_custom, null);
TextView tv = view.findViewById(R.id.tv_toast);
tv.setText(TextUtils.isEmpty(tvStr) ? "" : tvStr);
mImgToast.setView(view);
mImgToast.setGravity(Gravity.CENTER, 0, 0);
mImgToast.setDuration(Toast.LENGTH_LONG);
mImgToast.show();
return mImgToast;
}
}
下面是布局檔案
new_toast_custom.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/txt_size_16"
android:paddingRight="@dimen/common_margin_20"
android:paddingLeft="@dimen/common_margin_20"
android:paddingTop="@dimen/common_margin_10"
android:paddingBottom="@dimen/common_margin_10"
android:background="@drawable/toast_bg"
android:text="暫無資料"
android:textColor="@color/white"/>
</LinearLayout>
toast_custom.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/main_shadow">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="vertical">
<ImageView
android:layout_marginTop="10dp"
android:id="@+id/toast_custom_iv"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_empty_picture"
android:layout_gravity="center"/>
<TextView
android:id="@+id/toast_custom_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:textSize="16sp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="10dp"
android:textColor="@color/txt_hint"
tools:text="登入成功"/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
toast_custom_suc.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tv_rounded_corners">
<LinearLayout
android:layout_width="160dp"
android:layout_height="80dp"
android:orientation="vertical">
<ImageView
android:layout_marginTop="10dp"
android:id="@+id/toast_custom_iv"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@mipmap/currency_icon_right"
android:layout_gravity="center"/>
<TextView
android:layout_gravity="center_horizontal"
android:id="@+id/toast_custom_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:textSize="16sp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="10dp"
android:textColor="@color/txt_hint"
android:maxLines="1"
android:ellipsize="end"
tools:text="登入成功"/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
拷貝到項目中即可按需使用