Pages

Ads 468x60px

Tuesday, 2 July 2013

Displaying a Progress Dialog

Displaying a Progress Dialog

Besides the plain dialog that you created in the previous section, you can also create a progress dialog. A progress dialog is useful for showing the progress of some activities, such as the status of a download operation.

Displaying a Progress Dialog Window Using an Activity

1. Using the same project created in the previous section, add the following statements in bold to the MainActivity.java file:

            package net.learn2develop.Dialog;
                import android.app.Activity;
                import android.app.AlertDialog;
                import android.app.Dialog;
                import android.content.DialogInterface;
                import android.os.Bundle;
                import android.view.View;
                import android.widget.Button;
                import android.widget.Toast;
                import android.app.ProgressDialog;
                import android.os.Handler;
                import android.os.Message;
            public class MainActivity extends Activity
            {
                    CharSequence[] items = { “Google”, “Apple”, “Microsoft” };
                    boolean[] itemsChecked = new boolean [items.length];
                    private ProgressDialog _progressDialog;
                    private int _progress = 0;
                    private Handler _progressHandler;
                    /** Called when the activity is first created. */
            @Override
            public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.main);
                    Button btn = (Button) findViewById(R.id.btn_dialog);
                    btn.setOnClickListener(new View.OnClickListener() {
               public void onClick(View v)
               {
                        showDialog(1);
                         _progress = 0;
                         _progressDialog.setProgress(0);
                         _progressHandler.sendEmptyMessage(0);
            }
            });
        _progressHandler = new Handler() {
       
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                    if (_progress >= 100) {
                    _progressDialog.dismiss();
            }
            else
            {
                _progress++;
                _progressDialog.incrementProgressBy(1);
                _progressHandler.sendEmptyMessageDelayed(0, 100);
            }
         }
        };
       }
            @Override
       protected Dialog onCreateDialog(int id)
       {
            switch (id) {
            case 0:
            return new AlertDialog.Builder(this)
            //...
            //...
            .create();
            case 1:
                _progressDialog = new ProgressDialog(this);
                _progressDialog.setIcon(R.drawable.icon);
                _progressDialog.setTitle(“Downloading files...”);
                _progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                _progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, “Hide”, new
            DialogInterface.OnClickListener()
            {
                 public void onClick(DialogInterface dialog,  int whichButton)
                 {
                    Toast.makeText(getBaseContext(),
                    “Hide clicked!”, Toast.LENGTH_SHORT).show();
                 }
            });
                _progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, “Cancel”, new
                DialogInterface.OnClickListener()
             {
                public void onClick(DialogInterface dialog,  int whichButton)
                {
                        Toast.makeText(getBaseContext(),
                        “Cancel clicked!”, Toast.LENGTH_SHORT).show();
                   }
              });
                 return _progressDialog;
             } return null;
            }
          }

2. Press F11 to debug the application on the Android Emulator. Click the button to display the progressdialog (see Figure ). Observe that the progress bar will count up to 100.


How It Works

To create a progress dialog, you first create an instance of the ProgressDialog class and set its various properties, such as icon, title, and style:

            _progressDialog = new ProgressDialog(this);
            _progressDialog.setIcon(R.drawable.icon);
            _progressDialog.setTitle(“Downloading files...”);
            _progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

You then set the two buttons that you want to display inside the progress dialog:

     _progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, “Hide”, new
       DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int whichButton)
            {
                        Toast.makeText(getBaseContext(),
                    “Hide clicked!”, Toast.LENGTH_SHORT).show();
            }
         });
         _progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, “Cancel”, new
            DialogInterface.OnClickListener()
             {
                    public void onClick(DialogInterface dialog, int whichButton)
                    {
                        Toast.makeText(getBaseContext(),
                           “Cancel clicked!”, Toast.LENGTH_SHORT).show();
                     }
                });
                return _progressDialog;
             }

The preceding causes a progress dialog to appear (see Figure)


To display the progress status in the progress dialog, you need to use a Handler object to run a background thread:

            _progress = 0;
            _progressDialog.setProgress(0);
           _progressHandler.sendEmptyMessage(0);

The background thread counts up to 100, with each count delayed by 100 milliseconds:

       _progressHandler = new Handler()
        {
            public void handleMessage(Message msg)
            {
                super.handleMessage(msg);
                if (_progress >= 100)
                {
                _progressDialog.dismiss();
                } else
                {
                        _progress++;
                        _progressDialog.incrementProgressBy(1);
                     _progressHandler.sendEmptyMessageDelayed(0, 100);
            }
         }
      };

When the count reaches 100, the progress dialog is dismissed.

0 التعليقات:

Post a Comment

.

Education blog