今天給大家分享在鴻蒙上一個按鈕實(shí)現(xiàn)下載、暫停、取消、顯示下載進(jì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 進(jìn)度條
布局文件:
ProgressBar 的點(diǎn)擊事件:
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("已取消下載"); } }) //下載進(jìn)程 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); } } });
取消下載的操作:(因?yàn)樾枰谝粋€按鈕上實(shí)現(xiàn)所以操作,所以取消使用長按來實(shí)現(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)題:鴻蒙手機(jī)上一個按鈕實(shí)現(xiàn)下載操作!
文章出處:【微信公眾號:HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
代碼
+關(guān)注
關(guān)注
30文章
4723瀏覽量
68236 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2302瀏覽量
42689
原文標(biāo)題:鴻蒙手機(jī)上一個按鈕實(shí)現(xiàn)下載操作!
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論