android之Toast多次提示延時處理


學習android的人應該都明白Toast是用來做做什么的,在這里就不多說了。

Toast提示出現后會停留一段時間,在這段時間內再次執行Toast會有時間延遲,即上一次提示消失后下一次才出現。這時我們希望信息能及時更新。

解決思路:當前沒有提示信息時正常執行;當前有提示信息時新信息覆蓋原來的信息。

 

法一:創建一個ToastShow類,用於封裝此功能

import android.content.Context;
import android.view.Gravity;
import android.widget.Toast;

public class ToastShow { 
    private Context context;  //在此窗口提示信息

    private Toast toast = null;  //用於判斷是否已有Toast執行
    public ToastShow(Context context) { 
         this.context = context; 
    } 
    public void toastShow(String text) { 
        if(toast == null) 
        { 
            toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);  //正常執行
        } 
        else { 
            toast.setText(text);  //用於覆蓋前面未消失的提示信息
        } 
        toast.show();  
    } 
} 

在需要此功能的窗口中使用

ToastShow toast = new ToastShow(this);
toast.toastShow("提示信息");

 

法二:創建一個ToastShow類,用於封裝此功能

import android.content.Context;
import android.widget.Toast;

/**
 * 自定義Toast
 * @author Administrator
 *
 */
public class ToastUtils {

    protected static Toast toast   = null;
    private static String oldMsg;
    private static long oneTime = 0;
    private static long twoTime = 0;

    public static void showToast(Context context, String s){      
        if(toast==null){   
            toast =Toast.makeText(context, s, Toast.LENGTH_SHORT);  
            toast.show();  
            oneTime=System.currentTimeMillis();  
        }else{  
            twoTime=System.currentTimeMillis();  
            if(s.equals(oldMsg)){  
                if(twoTime-oneTime>Toast.LENGTH_SHORT){  
                    toast.show();  
                }  
            }else{  
                oldMsg = s;  
                toast.setText(s);  
                toast.show();  
            }         
        }  
        oneTime=twoTime;  
    }  

    public static void showToast(Context context, int resId){     
        showToast(context, context.getString(resId));  
    }  
}

在需要此功能的窗口中使用

ToastUtils.showToast(this, "提示信息");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM