zoukankan      html  css  js  c++  java
  • 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); 
        } 
    } 
  • 相关阅读:
    WPF 窗口图标与背景
    WPF Convert和RelativeSource
    属性更改通知(INotifyPropertyChanged)——针对ObservableCollection
    WPF 输入异常提示
    WPF 异常处理
    WPF DataGrid 触发器
    拉格朗日乘子法(Lagrange multiplier)和KKT条件
    在同一台电脑上添加多个ssh key
    重积分的换元法
    Matlab之显示输出
  • 原文地址:https://www.cnblogs.com/gongcb/p/2494539.html
Copyright © 2011-2022 走看看