今天給大家分享在鴻蒙上一個按鈕實現下載、暫停、取消、顯示下載進度操作。
先看效果,如下圖:
開始
暫停
下載中
下載完成
取消下載
開始寫代碼
①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文章
4825瀏覽量
69047 -
鴻蒙
+關注
關注
57文章
2392瀏覽量
43050
原文標題:鴻蒙手機上一個按鈕實現下載操作!
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論