今天给大家分享在鸿蒙上一个按钮实现下载、暂停、取消、显示下载进度操作。
先看效果,如下图:
开始
暂停
下载中
下载完成
取消下载
开始写代码
①PRDownloader 的配置
下载功能使用的是 PRDownloader:
https://gitee.com/chinasoft_ohos/PRDownloader
首先,在 moudle 级别下的 build.gradle 文件中添加依赖:
implementation'com.gitee.chinasoft_ohos1.0.0'
在 config.json 中添加互联网许可:
"deviceConfig":{ "default":{ "directLaunch":false, "network":{ "cleartextTraffic":true } } }
"reqPermissions":[ { "name":"ohos.permission.INTERNET" } ]
在 AbilitySlice 的 onStart() 方法中初始化它。
PRDownloader.initialize(getApplicationContext());
②创建一个 ProgressBar 进度条
布局文件:
ProgressBar 的点击事件:
progressBar.setClickedListener(newComponent.ClickedListener(){ @Override publicvoidonClick(Componentcomponent){ if(downloadId==0){ newToastDialog(getContext()).setText("开始下载").show(); downloadId=PRDownloader.download(url,path,name) .build() //恢复下载 .setOnStartOrResumeListener(newOnStartOrResumeListener(){ @Override publicvoidonStartOrResume(){ progressBar.setProgressHintText("正在下载"); } }) //暂停下载 .setOnPauseListener(newOnPauseListener(){ @Override publicvoidonPause(){ progressBar.setProgressHintText("恢复下载"); } }) //取消下载 .setOnCancelListener(newOnCancelListener(){ @Override publicvoidonCancel(){ progressBar.setProgressHintText("已取消下载"); } }) //下载进程 currentBytes当前下载字节,totalBytes文件总字节。 .setOnProgressListener(newOnProgressListener(){ @Override publicvoidonProgress(Progressprogress){ longcurrentBytes=progress.currentBytes; longtotalBytes=progress.totalBytes; progressBar.setMaxValue((int)totalBytes); progressBar.setProgressValue((int)currentBytes); progressBar.setProgressHintText(newSizeUtil().getPrintSize(currentBytes)+"/"+newSizeUtil().getPrintSize(totalBytes)); } }) .start(newOnDownloadListener(){ @Override publicvoidonDownloadComplete(){ progressBar.setProgressHintText("下载完成"); status=PRDownloader.getStatus(downloadId); text.setText(status.name()); } @Override publicvoidonError(Errorerror){ progressBar.setProgressHintText("下载出错"); downloadId=0; text.setText(error.getServerErrorMessage()); } }); status=PRDownloader.getStatus(downloadId); text.setText(status.name()); //QUEUEDRUNNING下载中 }elseif(status.name().equals("QUEUED")||status.name().equals("RUNNING")){ PRDownloader.pause(downloadId); newToastDialog(getContext()).setText("暂停下载").show(); status=PRDownloader.getStatus(downloadId); text.setText(status.name()); //PAUSED暂停 }elseif(status.name().equals("PAUSED")){ PRDownloader.resume(downloadId); newToastDialog(getContext()).setText("恢复下载").show(); status=PRDownloader.getStatus(downloadId); text.setText(status.name()); //已完成下载 }elseif(progressBar.getProgressHintText().equals("下载完成")){ text.setText("已下载完成,存储路径: "+path); } } });
取消下载的操作:(因为需要在一个按钮上实现所以操作,所以取消使用长按来实现)
progressBar.setLongClickedListener(newComponent.LongClickedListener(){ @Override publicvoidonLongClicked(Componentcomponent){ newToastDialog(getContext()).setText("取消下载").show(); PRDownloader.cancel(downloadId); downloadId=0; progressBar.setProgressValue(0); progressBar.setProgressHintText("开始下载"); status=PRDownloader.getStatus(downloadId); text.setText(status.name()); } });
原文标题:鸿蒙手机上一个按钮实现下载操作!
文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。
-
代码
+关注
关注
30文章
4779浏览量
68516 -
鸿蒙
+关注
关注
57文章
2339浏览量
42803
原文标题:鸿蒙手机上一个按钮实现下载操作!
文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论