请问一下
鸿蒙API9+axios封装一个通用工具类中,
网络请求工具类AxiosRequest下的hideLoadingDialog与showLoadingDialog是如何封装的?
网络请求中如何封装对话框并调用
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在HarmonyOS上,我们可以使用
@ohos.network.HttpClient
进行网络请求,并且可以通过创建自定义对话框来实现loading效果。这里我会提供一个基本的示例,展示如何在AxiosRequest类中封装显示和隐藏加载对话框的方法。首先,我们需要导入必要的包:
import ohos.app.Context; import ohos.app.Dialog; import ohos.app.Layout; import ohos.ui.common.LinearGravity; import ohos.ui.flat.Button; import ohos.ui.flat.FlatLinearLayout; import ohos.ui.flat.FlatUIComponent; import ohos.ui.model.Text;
接下来,我们创建一个名为
LoadingDialog
的内部类,用于表示加载对话框:private class LoadingDialog extends Dialog { private Text loadingText; public LoadingDialog(Context context) { super(context); initLayout(); } private void initLayout() { Layout layout = new FlatLinearLayout(getContext(), LinearGravity.CENTER, LinearGravity.CENTER); layout.setPadding(30, 30, 30, 30); loadingText = new Text(getContext()); loadingText.setText("正在加载..."); loadingText.setTextSize(24); loadingText.setTextColor("#ffffff"); loadingText.setAlignment(Layout.Alignment.CENTER); Button cancelButton = new Button(getContext()); cancelButton.setText("取消"); cancelButton.setOnAction(new Runnable() { @Override public void run() { dismiss(); } }); layout.addComponent(loadingText); layout.addComponent(cancelButton); setRootComponent(layout); } }
现在我们在
AxiosRequest
类中添加显示和隐藏加载对话框的方法:public class AxiosRequest { private Context context; public AxiosRequest(Context context) { this.context = context; } // 显示加载对话框 public void showLoadingDialog() { LoadingDialog dialog = new LoadingDialog(context); dialog.show(); } // 隐藏加载对话框 public void hideLoadingDialog() { if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } // 进行网络请求的方法 public void makeNetworkRequest() { // 在此方法内进行网络请求,例如使用HttpClient // 在请求开始时调用showLoadingDialog() showLoadingDialog(); HttpClient client = new HttpClient(); HttpRequest request = new HttpRequest("https://api.example.com/data", HttpMethod.GET); // 添加回调,在请求成功、失败或取消时调用hideLoadingDialog() client.send(request, new HttpResponseCallback() { @Override public void onReceived(HttpResponse response) { hideLoadingDialog(); // 处理响应数据 } @Override public void onError(int code, String description) { hideLoadingDialog(); // 处理错误 } @Override public void onCancel() { hideLoadingDialog(); // 取消操作 } }); } }
在这个例子中,我们创建了一个
AxiosRequest
类,它包含了显示和隐藏加载对话框的方法。当进行网络请求时,首先调用showLoadingDialog()
,然后发送请求,并在请求完成(无论成功还是失败)后调用hideLoadingDialog()
。这样可以确保在等待网络响应期间,始终有一个加载对话框可见。解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 WPF动态创建页面内容
- ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
- ¥15 SQL数据库操作问题
- ¥100 关于lm339比较电路出现的问题
- ¥15 Matlab安装yalmip和cplex功能安装失败
- ¥15 加装宝马安卓中控改变开机画面
- ¥15 STK安装问题问问大家,这种情况应该怎么办
- ¥15 关于罗技鼠标宏lua文件的问题
- ¥15 halcon ocr mlp 识别问题
- ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线