Android Toast封装工具类(可在异线程中弹出)
记录Android源码中一个封装的Toast工具类,可以非UI线程中的弹出提示,可直接复现使用,
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;
import com.yourapp.ApplicationUtils;
public final class MtkToast {
private static Toast sToast = null;
private static final String DEFAULT_TOAST_STRING = "Androidos.net";
private static final String TAG = "MTKToast";
public static final int LENGTH_LONG = Toast.LENGTH_LONG;
public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
private MtkToast() {
// do nothing
}
/**
* Toast with default duration,LENGTH_SHORT
*
* @param context
* @param msg
* The message to toast
*/
public static void toast(Context context, String msg) {
toast(context, msg, LENGTH_SHORT);
}
/**
* Toast with default duration,LENGTH_SHORT
*
* @param context
* @param resId
* The string id.
*/
public static void toast(Context context, int resId) {
toast(context, resId, LENGTH_SHORT);
}
/**
*
* @param context
* @param resId
* The string id
* @param duration
* The toast duration
*/
public static void toast(Context context, int resId, int duration) {
toast(context, context.getResources().getString(resId), LENGTH_SHORT);
}
/**
*
* @param context
* @param msg
* The message to toast
* @param duration
* The toast duration
*/
public static void toast(Context context, String msg, int duration) {
Toast toast = getToast(context, msg, duration);
toast.show();
}
/**
* return a toast object for toast
*
* @param context
* @param msg
* @param duration
* @return the Toast singleton
*/
private static Toast getToast(Context context, String msg, int duration) {
if (sToast == null) {
sToast = Toast.makeText(context.getApplicationContext(), DEFAULT_TOAST_STRING,
duration);
}
sToast.setText(msg);
sToast.setDuration(duration);
return sToast;
}
public static void toastFromNoneUiThread(String text, int duration) {
Log.i(TAG, "toastFromNoneUiThread " + text);
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Log.i(TAG, "show toast " + text);
Toast.makeText(ApplicationUtils.getApplicationInstance(),
text, duration).show();
}
});
}
public static void toastFromNoneUiThread(final int msgResId) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(ApplicationUtils.getApplicationInstance(),
msgResId, Toast.LENGTH_SHORT).show();
}
});
}
}版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。




评论