欢迎来到Android ProgressDialog示例。在本教程中,我们将学习如何创建包含进度条的Android进度对话框。此外,我们将详细讨论ProgressDialog和ProgressBar之间的区别。
Android ProgressDialog
Android ProgressDialog是AlertDialog的扩展。要了解有关AlertDialog的更多信息,请查看其教程此处。Android ProgressDialog是一个对话框/窗口,用于显示任务的进度。Android Progress Dialog与ProgressBar几乎相同,唯一的区别是它显示为对话框。为了创建一个显示ProgressBar的ProgressDialog,我们需要像这样实例化它。
ProgressDialog progress = new ProgressDialog(this);
Android ProgressDialog和ProgressBar之间的区别
- ProgressBar是一个视图(如TextView、ImageView、Button等),可用于布局中显示某些进度。ProgressBar用于指示应用程序中仍在加载的内容,而用户仍然可以与其他部分进行交互。
- ProgressDialog是带有“内置”ProgressBar的对话框。当我们希望防止用户在等待时与应用程序进行交互时,会使用ProgressDialog。对话框方面会冻结用户的操作,直到其被解除
Android ProgressDialog 属性
Android ProgressDialog的一些重要属性如下。
- setMessage():此方法用于向用户显示消息。示例:加载中…
- setTitle():此方法用于为对话框设置标题
- setProgressStyle(ProgressDialog.STYLE_HORIZONTAL):此方法用于在对话框中显示水平进度条
- setProgressStyle(ProgressDialog.STYLE_SPINNER):此方法用于在对话框中显示圆形/旋转进度条
- setMax():此方法用于设置最大值
- getProgress():此方法用于获取当前进度值
- getMax():此方法返回进度的最大值
- show(Context context, CharSequence title, CharSequence message):这是一个静态方法,用于显示进度对话框
- incrementProgressBy(int diff):此方法通过传递的值差异递增进度条
在本教程中,我们将开发一个应用程序,显示包含水平进度条的ProgressDialog,该进度条在每200毫秒后递增
Android ProgressDialog 项目结构
Android ProgressDialog 示例
activity_main.xml
包含一个按钮,点击时调用一个ProgressDialog,如下所示: activity_main.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Start ProgressDialog"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="57dp" />
</RelativeLayout>
MainActivity.java 文件如下。 MainActivity.java
package com.journaldev.progressdialog;
import android.app.ProgressDialog;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button button;
ProgressDialog progressDoalog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDoalog = new ProgressDialog(MainActivity.this);
progressDoalog.setMax(100);
progressDoalog.setMessage("Its loading....");
progressDoalog.setTitle("ProgressDialog bar example");
progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDoalog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
while (progressDoalog.getProgress() <= progressDoalog
.getMax()) {
Thread.sleep(200);
handle.sendMessage(handle.obtainMessage());
if (progressDoalog.getProgress() == progressDoalog
.getMax()) {
progressDoalog.dismiss();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
progressDoalog.incrementProgressBy(1);
}
};
});
}
}
以下代码激活处理程序,在其中编写递增进度条的代码。
handle.sendMessage(handle.obtainMessage());
以下是您在Android模拟器中运行Android进度对话框示例应用程序时的输出视频。 这标志着Android ProgressDialog示例教程的结束。您可以从下面的链接下载最终的Android ProgressDialog项目。
Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example