Android编程实现Toast只显示最后一条的方法
来源:爱站网时间:2020-06-04编辑:网友分享
当你在开发的时候,你应该经常有这样一个需求,需要提示用户一些信息,toast可能会不时使用,但在使用toast时,会出现连续使用的问题,即逐个显示toast,本文是爱站技术频道小编带来的Android编程实现Toast只显示最后一条的方法,一起来了解一下吧!
当你在开发的时候,你应该经常有这样一个需求,需要提示用户一些信息,toast可能会不时使用,但在使用toast时,会出现连续使用的问题,即逐个显示toast,本文是爱站技术频道小编带来的Android编程实现Toast只显示最后一条的方法,一起来了解一下吧!
ToastUtil.Java
import android.content.Context; import android.graphics.PixelFormat; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.Gravity; import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; public class ToastUtil { //方法一 private static Handler mHandler = new Handler(Looper.getMainLooper()); private static Toast mToast = null; private static Object synObject = new Object(); public static void showToastByThread(Context context, String msg){ showToastByThread(context, msg, Toast.LENGTH_SHORT); } public static void showToastByThread(Context context, int msg){ showToastByThread(context, context.getText(msg), Toast.LENGTH_SHORT); } public static void showToastByThread(final Context context, final CharSequence msg, final int length){ new Thread(new Runnable() { @Override public void run() { mHandler.post(new Runnable() { @Override public void run() { synchronized (synObject) { if (mToast != null){ mToast.setText(msg); mToast.setDuration(length); }else{ mToast = Toast.makeText(context, msg, length); } mToast.show(); } } }); } }).start(); } //方法二:注意此方法不能再子线程中使用 private static long oneTime; private static long twoTime; private static String oldMsg; public static void showToastByTime(Context context, String msg){ if (mToast == null) { mToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT); mToast.show(); oneTime = System.currentTimeMillis(); } else { twoTime = System.currentTimeMillis(); if (msg.equals(oldMsg)){ if (twoTime-oneTime > Toast.LENGTH_SHORT){ mToast.show(); } } else { oldMsg = msg; mToast.setText(msg); mToast.show(); } } oneTime = twoTime; } public static void showToastByTime(Context context, int msg){ showToastByTime(context, context.getString(msg)); } //方法三 public static TextView mTextView; public static WindowManager mWindowManager = null; private static Handler mPriHandler = new Handler(){ @Override public void handleMessage(Message msg) { cancelToast(); } }; public static void showToastByWindow(Context context, String msg){ mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); if (mTextView == null){ mTextView = new TextView(context); } mTextView.setText(msg); mTextView.setTextSize(20); mTextView.setPadding(0, 0, 0, 30); if (mTextView.getParent() == null){ WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.gravity= Gravity.BOTTOM; params.alpha = 0.65f; params.x = 0; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; params.format = PixelFormat.TRANSLUCENT; params.windowAnimations = 0; mWindowManager.addView(mTextView, params); mPriHandler.sendEmptyMessageDelayed(101, 1000); } else { mTextView.setText(msg); mPriHandler.removeMessages(101); mPriHandler.sendEmptyMessageDelayed(101, 1000); } } public static void cancelToast(){ if (mTextView != null && mTextView.getParent() != null){ mWindowManager.removeView(mTextView); } } }
了解完上述Android编程实现Toast只显示最后一条的方法,相信很多程序员会少走很多弯路,但是虽然爱站技术频道的小编提供了详尽的描述,其他的操作还是要靠自己哟。