天天看点

Android ProgressDialog 进度条对话框

Android ProgressDialog 进度条对话框
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    tools:context="shortcut.song.com.myapplication.ProgressDialogActivity">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Spinner"
        android:onClick="showSpinner"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Indaterminate"
        android:onClick="showIndaterminate"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Progress"
        android:onClick="showProgress"
        />
</LinearLayout>
           
package shortcut.song.com.myapplication;

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.View;

public class ProgressDialogActivity extends AppCompatActivity {
    final static int MAX_PROGRESS = 100;
    private int[] data = new int[50];
    int progressStatus = 0;
    int hasData = 0;
    ProgressDialog pd1, pd2;

    Handler mHandler = new Handler()
    {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0x123)
            {
                pd2.setProgress(progressStatus);
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_progress_dialog);
    }

    public void showSpinner(View source)
    {
        ProgressDialog.show(this, "任务执行中","任务执行中,请稍等...",false, true);
    }

    public void showIndaterminate(View source)
    {
        pd1 = new ProgressDialog(ProgressDialogActivity.this);
        pd1.setTitle("任务下在执行中");
        pd1.setMessage("任务正在执行中,请稍做等候....");
        pd1.setCancelable(true);
        pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd1.setIndeterminate(true);
        pd1.show();
    }

    public void showProgress(View source)
    {
        progressStatus = 0;
        hasData = 0;
        pd2 = new ProgressDialog(ProgressDialogActivity.this);
        pd2.setMax(MAX_PROGRESS);
        pd2.setTitle("任务完成百分比");
        pd2.setMessage("耗时任务完成百分比");
        pd2.setCancelable(false);
        pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd2.setIndeterminate(false);
        pd2.show();

        new Thread()
        {
            @Override
            public void run() {
                super.run();
                while(progressStatus < MAX_PROGRESS)
                {
                    progressStatus = MAX_PROGRESS * doWork() / data.length;
                    mHandler.sendEmptyMessage(0x123);
                }
                if(progressStatus >= MAX_PROGRESS)
                {
                    pd2.dismiss();
                }
            }
        }.start();

    }

    public int doWork()
    {
        data[hasData++] = (int)(Math.random() * 100);
        try{
            Thread.sleep(100);
        }catch(InterruptedException e)
        {
            e.printStackTrace();
        }
        return hasData;
    }
}
           
Android ProgressDialog 进度条对话框
Android ProgressDialog 进度条对话框
Android ProgressDialog 进度条对话框