Android加载loading对话框的功能及实例代码(不退出沉浸式效果)
在Android开发中,我们常常需要在加载数据时显示一个loading对话框来提示用户进行等待,本篇文章将介绍如何在不退出沉浸式效果的情况下,在Android应用程序中实现loading对话框的功能。
一、基本思路
要实现loading对话框的功能,我们需要完成以下步骤:
-
在布局文件中添加一个ProgressBar组件或其他的加载提示组件。
-
在Java代码中,编写显示或隐藏加载提示对话框的代码。
二、实现过程
1. 在布局文件中添加一个ProgressBar组件。
我们可以在布局文件中添加一个ProgressBar组件,用它来显示加载提示信息。这里以ProgressBar组件为例,其它加载提示组件也可以类似实现。
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true"
android:visibility="gone" />
设置属性android:visibility="gone"
来隐藏ProgressBar,待程序需要显示时,再使用Java代码来设置其可见。
2. 编写Java代码
我们创建一个叫Utils的类,其中编写showProgressDialog和hideProgressDialog方法用于显示和隐藏加载提示框。这里使用ProgressDialog组件进行演示。
public class Utils {
private static ProgressDialog progressDialog;
/**
* 显示加载对话框
*
* @param context 上下文对象
* @param message 显示信息
*/
public static void showProgressDialog(Context context, String message) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(context);
progressDialog.setCancelable(false);
progressDialog.setMessage(message);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
}
progressDialog.show();
}
/**
* 隐藏加载对话框
*/
public static void hideProgressDialog() {
if (progressDialog != null) {
progressDialog.dismiss();
progressDialog = null;
}
}
}
在需要显示加载提示框的地方,直接调用Utils.showProgressDialog(context, message)
;在需要隐藏加载提示框的地方,直接调用Utils.hideProgressDialog()
即可。
三、示例
示例1
在用户登录的过程中,通常需要进行网络请求,请求完成之前需要显示加载提示框,请求完成则隐藏提示框。示例代码如下:
public void login() {
Utils.showProgressDialog(context, "登录中,请稍候...");
// 发送登录请求
Request request = new Request.Builder()
.url("login url")
.build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
e.printStackTrace();
Utils.hideProgressDialog();
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
Utils.hideProgressDialog();
if (response.isSuccessful()) {
// 登录成功后的逻辑处理
} else {
// 登录失败后的逻辑处理
}
}
});
}
示例2
在使用RecyclerView显示数据的过程中,当数据量较大时,需要先进行加载,加载完成之前,需要显示加载提示框,示例代码如下:
public class RecyclerActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<String> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler);
recyclerView = findViewById(R.id.recyclerView);
Utils.showProgressDialog(this, "数据加载中,请稍候...");
loadData();
}
private void loadData() {
// 网络获取数据
Request request = new Request.Builder()
.url("data url")
.build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
if (response.isSuccessful()) {
String responseString = response.body().string();
// 解析数据
data = parseData(responseString);
// 切换到主线程更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// 设置RecyclerView的布局管理器、适配器等
recyclerView.setLayoutManager(new LinearLayoutManager(RecyclerActivity.this));
recyclerView.setAdapter(new MyAdapter(data));
Utils.hideProgressDialog();
}
});
} else {
// 数据加载失败的处理
}
}
});
}
private List<String> parseData(String responseString) {
// 省略解析代码,返回数据列表
return new ArrayList<>();
}
}
四、总结
通过以上步骤,我们就可以在Android应用程序中实现loading对话框的功能,并在数据加载或网络请求等操作的过程中显示加载提示信息。注意在使用沉浸式效果时,不能直接使用ProgressDialog,否则会退出沉浸式效果,需要使用其他加载提示组件来替代ProgressDialog。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android加载loading对话框的功能及实例代码(不退出沉浸式效果) - Python技术站