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

1                          if(mtoast!=null)
2                           {
3                               mtoast.setText(progress);    
4                           }
5                           else
6                           {
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                   @Override
14                   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                           else
23                           {
24                               mtoast=Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT);
25                           } 
26                           mtoast.show(); //显示toast信息
27                   }
28 
29                   @Override
30                   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                         else
39                         {
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                   @Override
57                   public void onFailure(HttpException error, String msg) {
58                           CommonUtils.LogWuwei(tag,"下载失败:"+msg+error); 
59                   }
60           });
61           }

4、有图有真相

 

ok,That's all

2015.3.7更新:

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

 
 
原文地址:https://www.cnblogs.com/kunyashaw/p/4303661.html