這篇文章主要介紹了Android中如何實(shí)現(xiàn)Toast只顯示最后一條,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目前創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、平輿網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。具體如下:
在做Android開(kāi)發(fā)中,時(shí)不時(shí)的可能會(huì)用到Toast,但用Toast的時(shí)候,連續(xù)使用會(huì)存在一個(gè)問(wèn)題,就是一條條顯示Toast。而不是直接顯示最后一條。因此,根據(jù)此需求,現(xiàn)在寫(xiě)了ToastUtil這個(gè)類(lèi),該類(lèi)中有三個(gè)方法供選擇。
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(); } //方法二:注意此方法不能再子線(xiàn)程中使用 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); } } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Android中如何實(shí)現(xiàn)Toast只顯示最后一條”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
網(wǎng)站名稱(chēng):Android中如何實(shí)現(xiàn)Toast只顯示最后一條-創(chuàng)新互聯(lián)
URL分享:http://aaarwkj.com/article10/dddjgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容