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更新: