1                          if(mtoast!=null)2                           {3                               mtoast.setText(progress);    4                           }5                           else6                           {7                               mtoast=Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT);8                           } 9                           mtoast.show(); //显示toast信息

上述代码就完成了基本功能。

1、为什么会有这个问题?

我们知道如果用Toast.makeText(...)这种方式,那么生成的toast会进行排队,在上一个toast的有效时间没有结束前,不能够更新toast的内容。

那么问题来了,如果想用toast实现简单的,快速的消息提醒,上述排队的方式自然不能满足我们的需求

2、过程分析

我们首先定义一个Toast类型的mtoast并赋值为空。

那么在循环显示进度的方法中,我们引用最上边那段代码:

①如果mtoast为空,就实例化一个Toast变量,同时显示进度;

②在接下来每次进入显示进度的方法中,更改mtoast的显示文本,从而实现进度提醒的作用

3、代码片段赏析:

 1           HttpUtils http = new HttpUtils(); 2           for(int i=0;i<fontName.length;i++) 3           { 4               String path = pathPrefix+fontName[i]; 5               nowDownloadFontName = pathFonts+fontName[i]; 6               http.download(path, pathFonts+fontName[i],new RequestCallBack<File>() { 7  8                   @Override 9                   public void onStart() {10                       CommonUtils.LogWuwei(tag,"开始下载...");11                   }12 13                   @Override14                   public void onLoading(long total, long current, boolean isUploading) {15                           CommonUtils.LogWuwei(tag,"下载进度:"+((current*100)/total)+"%");16                           String progress = "加载字体中,已下载:"+((current*100)/total)+"%";17                            18                           if(mtoast!=null)19                           {20  mtoast.setText(progress);   21                           }22                           else23                           {24                               mtoast=Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT);25  } 26                           mtoast.show(); //显示toast信息27                   }28 29                   @Override30                   public void onSuccess(ResponseInfo<File> responseInfo) {31                       CommonUtils.LogWuwei(tag,"下载成功,文件已经保存至:" + responseInfo.result.getPath());32                       33                       String progress = "下载成功,文件已经保存至:" + responseInfo.result.getPath();34                       if(mtoast!=null)35                         {36                             mtoast.setText(progress);    37                         }38                         else39                         {40                             mtoast=Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT);41                             if(responseInfo.result.getPath().equals(pathFonts+"pianpina.ttf"))42                             {43                                     mtoast=Toast.makeText(getApplicationContext(),"初始化完毕,谢谢您的耐心等待", Toast.LENGTH_SHORT);44                             }45 46                         } 47                         mtoast.show(); //显示toast信息48                      49                         if(responseInfo.result.getPath().equals(pathFonts+"pianpina.ttf"))50                       {51                               judgeGoClientOrTv();52                       }53                   }54 55 56                   @Override57                   public void onFailure(HttpException error, String msg) {58                           CommonUtils.LogWuwei(tag,"下载失败:"+msg+error); 59                   }60           });61           }

4、有图有真相

15、android 用toast实现简单的进度显示

ok,That's all

2015.3.7更新:

android Toast大全(五种情形)建立属于你自己的Toast

更多相关文章

  1. Android实用代码片段(一)
  2. android 加载进度条动画
  3. fanfou(饭否) android客户端 代码学习1
  4. android短信发送器源代码
  5. android加载进度条
  6. Android Media Recorder录音播放源代码
  7. android实现自动关机代码
  8. Android中图形参数及图形内存信息获取
  9. android中异步加载图片信息

随机推荐

  1. android核心基础(8)_DDMS简介
  2. Android之DIalog的控制详解
  3. Android(安卓)AM命令及使用
  4. android ndk 入门之打印log信息
  5. Android(安卓)Studio故障处理之ADB not r
  6. Android(安卓)UI ActionBar功能-Action B
  7. 文章推荐:Android(安卓)BroadcastReceiver
  8. 利用ffmpeg和SDL实现一个跨android版本的
  9. uevent拔插事件分析--基于imx8
  10. Android(安卓)加速度传感器(G-Sensor)