今天給大家分享在鴻蒙上一個按鈕實現(xiàn)下載、暫停、取消、顯示下載進度操作。
先看效果,如下圖:
開始
暫停
下載中
下載完成
取消下載
開始寫代碼
①PRDownloader 的配置
下載功能使用的是 PRDownloader:
https://gitee.com/chinasoft_ohos/PRDownloader
首先,在 moudle 級別下的 build.gradle 文件中添加依賴:
implementation'com.gitee.chinasoft_ohos1.0.0'
在 config.json 中添加互聯(lián)網(wǎng)許可:
"deviceConfig":{
"default":{
"directLaunch":false,
"network":{
"cleartextTraffic":true
}
}
}
"reqPermissions":[
{
"name":"ohos.permission.INTERNET"
}
]
在 AbilitySlice 的 onStart() 方法中初始化它。
PRDownloader.initialize(getApplicationContext());
②創(chuàng)建一個 ProgressBar 進度條
布局文件:
ProgressBar 的點擊事件:
progressBar.setClickedListener(newComponent.ClickedListener(){
@Override
publicvoidonClick(Componentcomponent){
if(downloadId==0){
newToastDialog(getContext()).setText("開始下載").show();
downloadId=PRDownloader.download(url,path,name)
.build()
//恢復(fù)下載
.setOnStartOrResumeListener(newOnStartOrResumeListener(){
@Override
publicvoidonStartOrResume(){
progressBar.setProgressHintText("正在下載");
}
})
//暫停下載
.setOnPauseListener(newOnPauseListener(){
@Override
publicvoidonPause(){
progressBar.setProgressHintText("恢復(fù)下載");
}
})
//取消下載
.setOnCancelListener(newOnCancelListener(){
@Override
publicvoidonCancel(){
progressBar.setProgressHintText("已取消下載");
}
})
//下載進程 currentBytes當(dāng)前下載字節(jié),totalBytes文件總字節(jié)。
.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("恢復(fù)下載").show();
status=PRDownloader.getStatus(downloadId);
text.setText(status.name());
//已完成下載
}elseif(progressBar.getProgressHintText().equals("下載完成")){
text.setText("已下載完成,存儲路徑:
"+path);
}
}
});
取消下載的操作:(因為需要在一個按鈕上實現(xiàn)所以操作,所以取消使用長按來實現(xiàn))
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());
}
});
原文標(biāo)題:鴻蒙手機上一個按鈕實現(xiàn)下載操作!
文章出處:【微信公眾號:HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
代碼
+關(guān)注
關(guān)注
30文章
4927瀏覽量
72494 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2746瀏覽量
45136
原文標(biāo)題:鴻蒙手機上一個按鈕實現(xiàn)下載操作!
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
linkboy編程語言已初步支持鴻蒙操作系統(tǒng)
打印機如何取消打印任務(wù)
FPGA的Quartus ModelSim的安裝介紹和使用等基本操作資料免費下載
華為手機怎樣安裝鴻蒙系統(tǒng) 鴻蒙系統(tǒng)升級流程
華為鴻蒙官網(wǎng)首頁 華為鴻蒙官網(wǎng)下載安裝
華為官網(wǎng)鴻蒙系統(tǒng)下載安裝 華為鴻蒙系統(tǒng)下載地址
華為手機安裝鴻蒙系統(tǒng)教程
鴻蒙描述文件下載后如何安裝
在鴻蒙上使用Python進行物聯(lián)網(wǎng)編程

鴻蒙上安裝按鈕實現(xiàn)下載、暫停、取消、顯示等操作
評論