android 全局loading弹窗
时间: 2024-09-15 19:05:41 浏览: 67
在Android中创建全局的Loading弹窗通常是为了提供用户体验的一种过渡效果,比如在数据加载、网络请求或者其他耗时操作期间显示,用户可以在此期间了解到应用正在处理事务。以下是一个简单的实现步骤:
1. **创建Loading布局**: 创建一个自定义的视图,如`ProgressDialog`、`SwipeRefreshLayout` 或者自定义一个带有进度条、指示器等元素的XML布局。
```xml
<ProgressBar
android:id="@+id/loading_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true" />
```
2. **设置全局显示**: 将这个布局添加到应用程序可见区域的根视图上,例如`Activity`的`content_view`或者`Fragment`的`container`。
```java
// 在需要的地方显示
ViewGroup rootLayout = findViewById(R.id.root_layout);
rootLayout.setVisibility(View.GONE); // 初始隐藏
showLoading(rootLayout);
// ...
private void showLoading(ViewGroup rootView) {
if (rootView != null && !rootView.isInTouchMode()) {
rootView.setVisibility(View.VISIBLE);
}
}
// 当数据加载完成或取消时
private void hideLoading(ViewGroup rootView) {
if (rootView != null && rootView.isShown()) {
rootView.setVisibility(View.GONE);
}
}
```
3. **关联业务逻辑**: 在实际的数据获取、网络请求回调中,展示和隐藏Loading视图。当开始请求时调用`showLoading()`,数据加载完成后或遇到错误时调用`hideLoading()`。
```java
ApiService.getData().enqueue(new Callback<Data>() {
@Override
public void onResponse(Call<Data> call, Response<Data> response) {
hideLoading(rootLayout);
// 数据解析并处理
}
@Override
public void onFailure(Call<Data> call, Throwable t) {
hideLoading(rootLayout);
// 错误处理
}
});
```
阅读全文