Android ProgressDialog示例

时间:2020-02-23 14:29:09  来源:igfitidea点击:

欢迎使用Android ProgressDialog示例。
在本教程中,我们将学习如何创建包含ProgressBar的Android进度对话框。
我们还将详细讨论ProgressDialog和ProgressBar之间的区别。

Android ProgressDialog

Android ProgressDialog是AlertDialog的扩展。
要了解有关AlertDialog的更多信息,请在此处查看其教程。

Android ProgressDialog是一个对话框/对话框窗口,显示任务的进度。
Android进度对话框与ProgressBar几乎相同,除了它显示为对话框。

为了创建一个ProgressDialog来显示一个ProgressBar,我们需要像这样实例化它。

ProgressDialog progress = new ProgressDialog(this);

Android ProgressDialog和ProgressBar之间的区别

  • ProgressBar是一个视图(如TextView,ImageView,Button等。
    ),可以在布局中使用它来显示一些进度。
    ProgressBar用于指示tge应用程序中的某些内容仍在加载,而用户可能仍与其他部分进行交互
  • 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):这是一个静态方法,用于显示进度对话框
  • crementProgressBy(int diff):此方法将进度条增加作为参数传递的值的差

在本教程中,我们将开发一个显示进度对话框的应用程序,其中包含一个水平的ProgressBar,该进度条每200毫秒递增一次。

Android ProgressDialog项目结构

Android ProgressDialog示例

" activity_main.xml"包含一个按钮,该按钮在单击时调用一个ProgressDialog,如下面的xml代码所示:

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.theitroad.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());