Android进阶篇-Toast自定义显示时间

public class CustomToast { 
    public static final int LENGTH_MAX = -1; 
    private boolean mCanceled = true;
    private Handler mHandler; 
    private Context mContext; 
    private Toast mToast; 

    public CustomToast(Context context) { 
        this(context,new Handler()); 
    } 


    public CustomToast(Context context,Handler h) { 
        mContext = context; 
        mHandler = h; 
        mToast = Toast.makeText(mContext,"",Toast.LENGTH_SHORT); 
        mToast.setGravity(Gravity.BOTTOM, 0, 0); 
    } 

    public void show(int resId,int duration) { 
        mToast.setText(resId); 
        if(duration != LENGTH_MAX) { 
            mToast.setDuration(duration); 
            mToast.show(); 
         } else if(mCanceled) { 
             mToast.setDuration(Toast.LENGTH_LONG);
             mCanceled = false;
             showUntilCancel(); 
         } 
    }
    
    /**
     * @param text 要显示的内容
     * @param duration 显示的时间长
     * 根据LENGTH_MAX进行判断
     * 如果不匹配,进行系统显示
     * 如果匹配,永久显示,直到调用hide()
     */
    public void show(String text,int duration) { 
        mToast.setText(text); 
        if(duration != LENGTH_MAX) { 
            mToast.setDuration(duration); 
            mToast.show(); 
            } else { 
                if(mCanceled) { 
                    mToast.setDuration(Toast.LENGTH_LONG); 
                    mCanceled = false; 
                    showUntilCancel();
                }
            } 
        } 

    /**
     * 隐藏Toast
     */
    public void hide(){
        mToast.cancel();
        mCanceled = true;
    }
    
    public boolean isShowing() {
        return !mCanceled;
    }
    
    private void showUntilCancel() { 
        if(mCanceled) 
            return; 
        mToast.show();
        mHandler.postDelayed(new Runnable() {
            public void run() { 
                showUntilCancel(); 
            }
        },3000); 
    } 
}

猜你喜欢

转载自huaonline.iteye.com/blog/1924128