Android中關於Toast的使用體會
在安卓開發中,經常使用Toast用作使用者的操作提示,但Toast的顯示時長在原始碼中僅定義了兩個常量,如下:
Toast原始碼分析:
NotificationManagerService.Java這個類中定義了兩個靜態變數,分別對應Toast.LENGTH_LONG(3.5秒)和Toast.LENGTH_SHORT(2秒)的值:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
呼叫方法如下:
private void scheduleTimeoutLocked(ToastRecord r, boolean immediate){ Message m =Message.obtain(mHandler, MESSAGE_TIMEOUT, r); long delay =immediate ? 0 :(r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY); mHandler.removeCallbacksAndMessages(r); mHandler.sendMessageDelayed(m, delay); }
也就是說,正常情況下Toast..makeText(Context context,CharSequence text, int duration).show() 中的duration只能設這兩個值,其他值是沒有用處的。
自定義Toast時長:
但實際專案中即便是Toast.LENGTH_SHORT(2秒)對於使用者來說都顯得很長,這裡我們可以用handler來手動cancel這個toast,同時把它當做一個通用方法來使用。具體方法如下
/** * 顯示toast,自己定義顯示長短。 * param1:activity 傳入context * param2:word 我們需要顯示的toast的內容 * param3:time length long型別,我們傳入的時間長度(如500) */ public static void showToast(final Activity activity, final String word, final long time) { activity.runOnUiThread(new Runnable() { public void run() { final Toast toast = Toast.makeText(activity, word, Toast.LENGTH_LONG); toast.show(); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { toast.cancel(); } }, time); } }); }
學會分享,誨人利己。
相關推薦
Android中Toast顯示時間的自定義
Android中Toast的顯示時間為特定時間且不可更改,但是有時候我們開發設計需要讓Toast顯示更長時間,或者自己完全控制Toast的顯示和關閉。通過檢視Toast類的原始碼,可以看出,這有點難為它了,Toast類本身並沒有提供相應方法。 但是通過原始碼的檢視,還是可以看出點眉頭。原始碼分析思路
Android中Toast使用總結,原始碼剖析
最近看到折800重新整理成功彈出的效果挺好看的,就想著自己也實現一下,下面是折800的重新整理效果 感覺這個可以用popupwindow或者toast來實現,就用toast來實現了。佈局比較簡單,不貼圖了,直接貼上程式碼: public void showTo
關於Android中Toast使用小結
Android中的Toast用於向用戶顯示一些幫助/提示。 以下是關於Toast的一些使用的總結,希望對大家的學習和解決問題提供一些幫助: 預設Toast樣式: Toast.makeText(get
Android中Toast顯示時間的自定義控制
@SuppressLint("InflateParams") public static void show(Context context, String text) { View view = LayoutInflater.from(cont
Android中Toast不顯示的解決方案
今天在做測試的時候,Toast怎麼也顯示不出來,我分析了一下幾種可能 1、Context有問題,可能對應的上下文不正確 2、message的值為空 但是我檢查了好幾遍,都沒有問題。。。。在網上查資料,說不能再子執行緒中更新UI,但是我沒有開執行緒啊。。。無語了一晚上之後。我
Android中關於Toast的使用體會
在安卓開發中,經常使用Toast用作使用者的操作提示,但Toast的顯示時長在原始碼中僅定義了兩個常量,如下: Toast原始碼分析: NotificationManagerService.Java這
Android中通過反射來設置Toast的顯示時間
ring margin ner manage etc short 延遲 lln sse 這個Toast的顯示在Android中的用途還是非常大的,同一時候我們也知道toast顯示的時間是不可控的。我們僅僅能改動他的顯示樣式和顯示的位置,盡管他提供了一個顯示時間的設置方法
Android中通過反射來設定Toast的顯示時間
這個Toast的顯示在Android中的用途還是很大的,同時我們也知道toast顯示的時間是不可控的,我們只能修改他的顯示樣式和顯示的位置,雖然他提供了一個顯示時間的設定方法,但是那是沒有效果的(後面會說到),他有兩個靜態的常量Toast.SHORT和Toast.LONG,這
Android中關於定製Toast使用總結
前言: 有時我們有這樣一個需求,那就是,有時採用系統自帶的Toast感覺有點挫,所以我們下邊來進行一個定製看一下... 效果圖: 1>設定toast顯示的內容 toast.setView(
Android Studio 中 Toast重複點選不排隊
在使用Toast時,如果直接呼叫makeText函式,每次點選就會建立一個Toast物件,後面的Toast物件會在前面的Toast顯示完以後依次顯示。 所以會導致點選10次一直顯示幾十秒的情況,和我們平常使用的習慣不符。因此封裝一個ToastUtil類實現 每次點選都顯
Android中防止Toast一直點選一直彈出
在使用工作中經常使用Toast,如果使用者連續點選很多下按鈕,可能Toast顯示一兩分鐘也不會消失,這就給我們的使用者造成了困擾。以下是解決辦法: private int num = 0;//連續點選的次數 private static Toast toa
Android中Dialog和Toast及其Snackbar的使用和區別
一.Snackbar的使用 連線地址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0714/3187.html 如果說Dialog和Toast是兩個極端的話,那麼Snackbar就是處
Android 中關於吐司Toast帶文字和圖片的封裝。
Android中我們常用的提示功能就是Toast了,最近使用Toast的時候出現了一些不可預料的錯誤,分析才發現是由Toast例項太多引起導致,所以基於系統Toast封裝了帶圖片和文字Toast,並且永遠只有一個Toast例項,大大減少了記憶體開銷。實現思路:1,關於如何實現
使用Toast(android中的一種提醒方式) & 建立監聽 --4
Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() {
Android中修改toast的顯示位置
在xml中設定onclick屬性值,內部寫入一個String資料,在class檔案中使用此String作為方法名,即可實現其跳轉 public class ToastActivity extends
Android中的線程
開發者 又是 ace appcompat 技術 ted unknown 消息通知 設計模型 本文轉自:http://www.jianshu.com/p/d59b3cce2b54 如何理解線程 在操作系統中,線程是操作系統調度的最小單元,同時線程又是一種受限的系統資源,即
Android中getDrawable和getColor過時的替代方法
this logs con 知識 log launcher 16px ase spa 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 前言 Android SDK 升級到 23 之後,getDrawable和getColor方法提示過時。 解決方案 getRe
EventBus在Android中的簡單使用
pos stop hub create 數據傳遞 bsp 還要 GridView itemclick EventBus是一個方便與Android中各組件通信的開源框架,開源地址;https://github.com/greenrobot/EventBus。Ev
Android中的GraphicBuffer同步機制-Fence
mman fill spl 之前 超出 on() passing cli 觸發 Fence是一種同步機制,在Android裏主要用於圖形系統中GraphicBuffer的同步。那它和已有同步機制相比有什麽特點呢?它主要被用來處理跨硬件的情況。尤其是CPU。GPU和HWC
Android中處理大圖片時圖片壓縮
oca 內存空間 pan std ret bitmap sans source tar 1、BitmapFactory.Options中的屬性 在進行圖片壓縮時,是通過設置BitmapFactory.Options的一些值來改變圖片的屬性的,以下我們來看看BitmapF