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); 
    } 
} 

转载于:https://www.cnblogs.com/gongcb/archive/2012/05/10/2494539.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值