LoadDialog(封装工具类)

  1 public class LoadDialog extends Dialog {
  2 
  3     /**
  4      * LoadDialog
  5      */
  6     private static LoadDialog loadDialog;
  7     /**
  8      * canNotCancel, the dialog dimiss or undimiss flag
  9      */
 10     private boolean canNotCancel;
 11     /**
 12      * if the dialog don't dimiss, what is the tips.
 13      */
 14     private String tipMsg;
 15 
 16     private static TextView messageView;
 17 
 18     // private static OnTimeListener onTimeListener = null;
 19 
 20     /**
 21      * the LoadDialog constructor
 22      * 
 23      * @param ctx
 24      *            Context
 25      * @param canNotCancel
 26      *            boolean
 27      * @param tipMsg
 28      *            String
 29      */
 30     public LoadDialog(final Context ctx, boolean canNotCancel, String tipMsg) {
 31         super(ctx, R.style.BaseDialogTheme);
 32         this.canNotCancel = canNotCancel;
 33         this.tipMsg = tipMsg;
 34         this.getContext().setTheme(android.R.style.Theme_DeviceDefault_Dialog_NoActionBar_MinWidth);
 35         setContentView(R.layout.layout_dialog_loading);
 36         // add by zhangshengda 2014.07.23
 37         messageView = (TextView) findViewById(android.R.id.message);
 38         messageView.setText(tipMsg);
 39         setCancelable(canNotCancel);
 40         setCanceledOnTouchOutside(false);
 41         
 42         Window window = getWindow();
 43         window.getDecorView().getBackground().setAlpha(0);
 44 
 45     }
 46 
 47     @Override
 48     public boolean onKeyDown(int keyCode, KeyEvent event) {
 49         if (keyCode == KeyEvent.KEYCODE_BACK) {
 50             if (!canNotCancel) {
 51                 Toast.makeText(getContext(), tipMsg, Toast.LENGTH_SHORT).show();
 52                 //Intent intent = new Intent("RESET_LOCAL_DIAG");
 53                 //MainActivity.contexts.sendBroadcast(intent);
 54                 return true;
 55             }
 56         }
 57         return super.onKeyDown(keyCode, event);
 58     }
 59 
 60     /**
 61      * show the dialog
 62      * 
 63      * @param context
 64      */
 65     public static void show(Context context) {
 66         show(context, null, false);
 67     }
 68 
 69     /**
 70      * show the dialog
 71      * 
 72      * @param context
 73      *            Context
 74      * @param message
 75      *            String
 76      */
 77     public static void show(Context context, String message) {
 78         show(context, message, false);
 79     }
 80 
 81     /**
 82      * show the dialog
 83      * 
 84      * @param context
 85      *            Context
 86      * @param message
 87      *            String, show the message to user when isCancel is true.
 88      * @param isCancel
 89      *            boolean, true is can't dimiss,false is can dimiss
 90      */
 91     public static void show(Context context, String message, boolean isCancel) {
 92         if (context instanceof Activity) {
 93             if (((Activity) context).isFinishing()) {
 94                 return;
 95             }
 96         }
 97         if (loadDialog != null && loadDialog.isShowing()) {
 98             timerStop();
 99             messageView.setText(message);
100         } else {
101             timerStop();
102             loadDialog = new LoadDialog(context, isCancel, message);
103             if (((Activity) context).isFinishing()) {
104                 Log.e("Sanda","LoadDialog leaked window");
105                 return;
106             }else{
107                 loadDialog.show();
108             }
109         }
110     }
111 
112     public static void show(Context context, String message, OnCancelListener l) {
113         if (context instanceof Activity) {
114             if (((Activity) context).isFinishing()) {
115                 return;
116             }
117         }
118         if (loadDialog != null && loadDialog.isShowing()) {
119             timerStop();
120             messageView.setText(message);
121             loadDialog.setOnCancelListener(l);
122         } else {
123             timerStop();
124             loadDialog = new LoadDialog(context, true, message);
125             loadDialog.setOnCancelListener(l);
126             if (((Activity) context).isFinishing()) {
127                 Log.e("Sanda","LoadDialog leaked window");
128                 return;
129             }else{
130                 loadDialog.show();
131             }
132         }
133     }
134 
135     public static void show(Context context, String message, boolean isTime, boolean isCancel) {
136         if (context instanceof Activity) {
137             if (((Activity) context).isFinishing()) {
138                 return;
139             }
140         }
141         if (loadDialog != null && loadDialog.isShowing()) {
142             messageView.setText(message);
143         } else {
144             loadDialog = new LoadDialog(context, true, message);
145             if (((Activity) context).isFinishing()) {
146                 Log.e("Sanda","LoadDialog leaked window");
147                 return;
148             }else{
149                 loadDialog.show();
150             }
151         }
152         if (isTime)
153             timerAction(context);
154     }
155 
156     /**
157      * dismiss the dialog
158      */
159     public static void dismiss(Context context) {
160         try {
161             if (context instanceof Activity) {
162                 if (((Activity) context).isFinishing()) {
163                     loadDialog = null;
164                     timerStop();
165                     return;
166                 }
167             }
168 
169             if (loadDialog != null && loadDialog.isShowing()) {
170                 Context loadContext = loadDialog.getContext();
171                 if (loadContext != null && loadContext instanceof Activity) {
172                     if (((Activity) loadContext).isFinishing()) {
173                         loadDialog = null;
174                         timerStop();
175                         return;
176                     }
177                 }
178                 loadDialog.dismiss();
179                 loadDialog = null;
180                 timerStop();
181             }
182         } catch (Exception e) {
183             e.printStackTrace();
184             loadDialog = null;
185             timerStop();
186         }
187     }
188 
189     public static void setCancelListener(OnCancelListener l) {
190         if (loadDialog != null) {
191             loadDialog.setOnCancelListener(l);
192         }
193     }
194 
195     private static Timer timer = null;
196     private static TimerTask timerTask = null;
197 
198     public static void timerStop() {
199         if (timer != null) {
200             timer.cancel();
201             timer = null;
202         }
203         if (timer != null) {
204             timerTask.cancel();
205             timerTask = null;
206         }
207     }
208 
209     public static final int TASK_DELAY=60;
210     public static void timerAction(final Context context) {
211         timerStop();
212         timer = new Timer();
213         timerTask = new TimerTask() {
214             @Override
215             public void run() {
216                 Intent intentStatus = new Intent("RemoteDiagStatus");
217                 Bundle bundle = new Bundle();
218                 bundle.putInt("type", Constant.MESSAGE_RCU_STATE0F);
219                 intentStatus.putExtras(bundle);
220                 MainActivity.contexts.sendBroadcast(intentStatus);
221             }
222         };
223         timer.schedule(timerTask, TASK_DELAY*1000);
224     }
225 }

 

posted @ 2015-03-18 14:02  种花小哥  阅读(410)  评论(0编辑  收藏  举报