0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙上安装按钮实现下载、暂停、取消、显示等操作

OpenHarmony技术社区 来源:HarmonyOS技术社区 作者:HarmonyOS技术社区 2022-01-04 14:32 次阅读

今天给大家分享在鸿蒙上一个按钮实现下载、暂停、取消、显示下载进度操作。

先看效果,如下图:

开始

暂停

下载中

下载完成

取消下载

开始写代码

①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

    文章

    4536

    浏览量

    66487
  • 鸿蒙
    +关注

    关注

    54

    文章

    1446

    浏览量

    42031

原文标题:鸿蒙手机上一个按钮实现下载操作!

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    调试模式暂停按钮是灰色的

    嗨,大家好,我在调试模式中遇到了这个问题,它显示了“调试-运行”,但是暂停按钮(停止执行,CTRL+ALT+中断)是灰色的。在主循环中设置的断点也不会中断。有没有我错过的项目设置?另一个问题,这个
    发表于 09-05 08:37

    linkboy编程语言已初步支持鸿蒙操作系统

    linkboy是一门面向物联网、边缘计算、工业控制领域的自研编程语言,近期已初步完成对鸿蒙操作系统(OpenHarmony)的支持,实现了编译器后端工具链和相关组件在
    发表于 07-09 08:08

    鸿蒙上安装docker吗?

    android是不支持安装docker的,想了解下鸿蒙是否支持安装docker
    发表于 03-21 16:32

    鸿蒙系统下载安装方法

    昨天,华为正式发布HarmonyOS 2及多款搭载HarmonyOS 2的新产品。同步开启 Beta 版本公测招募活动。以下是鸿蒙系统下载安装的方法。
    发表于 06-03 16:37 10w次阅读

    华为手机怎样安装鸿蒙系统 鸿蒙系统升级流程

    升级的名单,如果自己使用的华为手机在第一批名单里,那么可以使用下面的方法来安装鸿蒙系统。 1.打开“设置”应用 2.在系统里点进“系统更新” 3.点击右上角,进入“更新设置” 4.打开“WLAN环境自动下载
    的头像 发表于 06-03 18:04 10.8w次阅读
    华为手机怎样<b class='flag-5'>安装</b><b class='flag-5'>鸿蒙</b>系统 <b class='flag-5'>鸿蒙</b>系统升级流程

    华为鸿蒙官网首页 华为鸿蒙官网下载安装

    华为鸿蒙官网首页如何下载安装鸿蒙操作系统?目前,鸿蒙OS官网已经正式上线了,鸿蒙OS的代码以组件
    的头像 发表于 06-17 10:18 1.3w次阅读

    华为官网鸿蒙系统下载安装 华为鸿蒙系统下载地址

    华为鸿蒙2.0系统已经上线一段时间了,华为官网鸿蒙系统如何下载安装?华为鸿蒙系统下载地址在哪?接下来跟小编一起来看看
    的头像 发表于 06-21 09:35 2.5w次阅读

    华为手机安装鸿蒙系统教程

    华为已经正式公布了全新的鸿蒙操作系统,使用华为手机、平板的用户便可以下载安装鸿蒙系统。
    的头像 发表于 07-07 11:49 1.9w次阅读

    鸿蒙描述文件下载后如何安装

    备受关注的华为鸿蒙操作系统已经发布有好一段时间了,相信很多用户朋友对描述文件不是很理解,鸿蒙描述文件下载后如何安装
    的头像 发表于 07-12 09:16 4793次阅读

    鸿蒙上使用Python进行物联网编程

    炫耀!然而,这却是非常重要的一步:在鸿蒙上用使用 Python 进行物联网编程是可行的!!! 既然可行,加上 Python 语言天生的优势(易于掌握,开发效率高),那么真的值得持续打造,将鸿蒙上的 Python 进行到底。 所以,今天的主题就是利用 GPIO 搭配 I2C
    的头像 发表于 09-28 09:55 3675次阅读
    在<b class='flag-5'>鸿蒙上</b>使用Python进行物联网编程

    供开发鸿蒙应用使用的ButtonProgressBar下载按钮进度条

    该三方开源库从github fork过来,主要将底层接口调用的实现修改成鸿蒙接口的实现,将三方库鸿蒙化,供开发鸿蒙应用的开发者使用。 But
    发表于 03-18 14:37 1次下载

    鸿蒙上实现“数字华容道”小游戏

    本篇文章教大家如何在鸿蒙上实现“数字华容道”小游戏。
    的头像 发表于 12-26 09:52 827次阅读

    鸿蒙上实现简单的“每日新闻”

    这是一篇讲解如何实现基于鸿蒙 JS 的简单的每日新闻。
    的头像 发表于 12-26 09:58 565次阅读

    鸿蒙上开发“小蜜蜂”游戏

    小时候我们有个熟悉的游戏叫小蜜蜂。本文教大家在鸿蒙上学做这个小蜜蜂游戏。
    的头像 发表于 04-03 11:27 1200次阅读

    基于ArkUI request API实现下载进度获取及显示

    本文基于 ArkUI request API 实现下载进度获取及显示
    的头像 发表于 04-04 16:53 1085次阅读