android handle显示加载框

xiaoxiao2021-02-28  112



今天,讲讲使用handle显示加载框,当任务完成后,隐藏加载框。

第一种代码:

   1. 定义常量和加载框     private final static int SEARCH_PREPARE = 100;     private final static int SEARCH_FINISHED = 120;     private Dialog exitDialog;

 

  2.定义handle变量   private Handler handler = new Handler() {

        @Override         public void handleMessage(Message msg) {             super.handleMessage(msg);             switch (msg.what) {                 /* 隐藏+号 显示进度条 */                 case SEARCH_PREPARE: {                     if (exitDialog == null) {                         //显示一个加载框                         exitDialog = new Dialog(mContext, R.style.CommonDialogStyle);                         exitDialog.setContentView(R.layout.dialog_layout);                         exitDialog.getWindow().setBackgroundDrawableResource(R.color.cache);                         exitDialog.setCancelable(false);                     }                     exitDialog.show();

                    if (edts.getText().toString().equals("P6S")){                         handler.postDelayed(new Runnable() {                             @Override                             public void run() {                                 if (exitDialog.isShowing()) {                                     handler.sendEmptyMessage(SEARCH_FINISHED);                                 }                             }                         }, 10 * 1000);                     }else {                         handler.postDelayed(new Runnable() {                             @Override                             public void run() {                                 if (exitDialog.isShowing()) {                                     handler.sendEmptyMessage(SEARCH_FINISHED);                                 }                             }                         }, 5 * 1000);                     }

                }

                break;                 /* 隐藏进度条 */                 case SEARCH_FINISHED: {

                    if (exitDialog.isShowing()) {                         Toast.makeText(mContext,R.string.channel_request_timeout,Toast.LENGTH_LONG).show();                         exitDialog.dismiss();                     }                 }                 break;             }         }     };

   3.使用时直接调用代码handler.sendEmptyMessage(SEARCH_PREPARE);这样,如果任务完成自己取消加载框。如果没有完成,5秒后也会自己取消加载框。

第二种代码:      第一种代码有个缺点,当多次请求时,第一次的5秒后的判断加载框显示会与后面的冲突,导致逻辑出现错误。第一种代码只适合不连续显示加载框的时候可以调用。

 1. 定义常量和加载框     private final static int SEARCH_PREPARE = 100;     private final static int SEARCH_FINISHED = 120;     private Dialog exitDialog;

  2.定义handle变量 private Handler handler = new Handler() {

  @Override   public void handleMessage(Message msg) {    super.handleMessage(msg);    switch (msg.what) {                 /* 隐藏+号 显示进度条 */     case ADD_PREPARE: {      if (exitDialog == null) {                         //显示一个加载框       exitDialog = new Dialog(DeviceAddActivity.this, R.style.CommonDialogStyle);       exitDialog.setContentView(R.layout.dialog_layout);       exitDialog.getWindow().setBackgroundDrawableResource(R.color.cache);       exitDialog.setCancelable(false);      }      exitDialog.show();      handler.postDelayed(runnable, 5 * 1000);     }     break;      /* 隐藏进度条 */     case ADD_FINISHED: {      if (exitDialog.isShowing()) {       exitDialog.dismiss();      }     }    }   }  };

3定义runnable变量 private  Runnable runnable=new Runnable() {   @Override   public void run() {    if (exitDialog.isShowing()) {     handler.sendEmptyMessage(ADD_FINISHED);    }   }  };

 4.使用时直接调用代码handler.sendEmptyMessage(SEARCH_PREPARE); 这样,如果任务完成自己取消加载框。并且移除runnable。具体代码:                       if (exitDialog != null && exitDialog.isShowing()) {     exitDialog.dismiss();     handler.removeCallbacks(runnable);     //去掉此次的加载框的监听    } 如果没有完成,5秒后也会自己取消加载框。

android 使用handle显示加载框就讲完了。

就这么简单。

转载请注明原文地址: https://www.6miu.com/read-49127.html

最新回复(0)