首页 / 行业
鸿蒙上安装按钮实现下载、暂停、取消、显示等操作
2022-01-04 14:32:00
今天给大家分享在鸿蒙上一个按钮实现下载、暂停、取消、显示下载进度操作。
先看效果,如下图:
开始
暂停
下载中
下载完成
取消下载
开始写代码
①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(){@OverridepublicvoidonClick(Componentcomponent){if(downloadId==0){newToastDialog(getContext()).setText("开始下载").show();downloadId=PRDownloader.download(url,path,name).build()//恢复下载.setOnStartOrResumeListener(newOnStartOrResumeListener(){@OverridepublicvoidonStartOrResume(){progressBar.setProgressHintText("正在下载");}})//暂停下载.setOnPauseListener(newOnPauseListener(){@OverridepublicvoidonPause(){progressBar.setProgressHintText("恢复下载");}})//取消下载.setOnCancelListener(newOnCancelListener(){@OverridepublicvoidonCancel(){progressBar.setProgressHintText("已取消下载");}})//下载进程 currentBytes当前下载字节,totalBytes文件总字节。.setOnProgressListener(newOnProgressListener(){@OverridepublicvoidonProgress(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(){@OverridepublicvoidonDownloadComplete(){progressBar.setProgressHintText("下载完成");status=PRDownloader.getStatus(downloadId);text.setText(status.name());}@OverridepublicvoidonError(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(){@OverridepublicvoidonLongClicked(Componentcomponent){newToastDialog(getContext()).setText("取消下载").show();PRDownloader.cancel(downloadId);downloadId=0;progressBar.setProgressValue(0);progressBar.setProgressHintText("开始下载");status=PRDownloader.getStatus(downloadId);text.setText(status.name());}});
原文标题:鸿蒙手机上一个按钮实现下载操作!
文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。
审核编辑:彭菁最新内容
手机 |
相关内容
清华大学研发光电融合芯片,算力超商
清华大学研发光电融合芯片,算力超商用芯片三千余倍,芯片,研发,商用,测试,计算,科学研究,近日,清华大学发布了一项重要科研成果,他们成消除“间隙”:力敏传感器如何推动新
消除“间隙”:力敏传感器如何推动新颖的HMI设计,传感器,智能手机,交互,交互方式,操作,用户,随着科技的不断发展,人机交互界面(HMI)的设振弦传感器智能化:电子标签模块
振弦传感器智能化:电子标签模块,模块,传感器,操作,连接,安装,控制,mbrs360t3g振弦传感器是一种常用的测量设备,用于检测物体的振动。工业物联网模块应用之砂芯库桁架机
工业物联网模块应用之砂芯库桁架机器人远程无线控制,模块,物联网,控制,操作,安全性,无线通信,砂芯库桁架机器人是一种用于制造业中语音芯片故障的原因简述
语音芯片故障的原因简述,原因,故障,芯片,语音,温度,确保,TS5A3157DCKR语音芯片是一种集成电路,用于处理和识别语音信号。通常由数字什么是屏蔽触发器,屏蔽触发器的组成
什么是屏蔽触发器,屏蔽触发器的组成、特点、原理、分类、操作规程及发展趋势,触发器,屏蔽,发展趋势,分类,事件,机制,屏蔽触发器(Shiel什么是密封继电器,密封继电器的基本
什么是密封继电器,密封继电器的基本结构、特点、工作原理、应用、操作方法、主要问题、保养方法及发展历程,继电器,密封,工作原理,什么是ESD防护器,ESD防护器的组成、
什么是ESD防护器,ESD防护器的组成、特点、原理、分类、操作规程及发展趋势,分类,发展趋势,操作,护垫,安全性,用于,ESD(Electrostatic