【android】 ProgressDialog的使用

來源:互聯網
上載者:User

package com.shao.android;

import java.util.Random;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Main extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
    private static final int MAX_Progress=100;
    private ProgressDialog progressDialog;
    private Handler progressHandler;
    private int progress;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button1=(Button)findViewById(R.id.btn1);
        Button button2=(Button)findViewById(R.id.btn2);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch(v.getId())
        {
        case R.id.btn1:
            showProgressDialog(ProgressDialog.STYLE_HORIZONTAL);
            break;
        case R.id.btn2:
            showProgressDialog(ProgressDialog.STYLE_SPINNER);
            break;
        }
    }
    // 顯示進度對話方塊,style表示進度對話方塊的風格
    private void showProgressDialog(int style)
    {
        progressDialog=new ProgressDialog(this);
        progressDialog.setIcon(R.drawable.wait);
        progressDialog.setTitle("正在處理資料...");
        progressDialog.setMessage("請稍後...");
        // 設定進度對話方塊的風格
        progressDialog.setProgressStyle(style);
        // 設定進度對話方塊的進度最大值
        progressDialog.setMax(MAX_Progress);
        // 設定進度對話方塊的【暫停】按鈕
    progressDialog.setButton("暫停", new DialogInterface.OnClickListener() {
       
       
        @Override
        public void onClick(DialogInterface dialog, int whichButton) {
            // TODO Auto-generated method stub
            // 通過刪除訊息代碼的方式停止定時器的執行
            progressHandler.removeMessages(1);
            // 恢複進度初始值
            progress=0;
            progressDialog.setProgress(0);
        }
    });   
    progressDialog.show();
    progressHandler=new Handler(){

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            // if (progressDialog.getProgress() >= MAX_PROGRESS)
            if(progress>=MAX_Progress)
            {
                // 進度達到最大值,關閉對話方塊
                progress=0;
                progressDialog.dismiss();
            }
            else {
                progress++;
                // 將進度遞增1
                progressDialog.incrementProgressBy(1);
                // 隨機設定下一次遞增進度(調用handleMessage方法)的時間
                progressHandler.sendEmptyMessageDelayed(1,50+ new Random().nextInt(500));
               
            }
        }
       
       
    };
       
    // 設定進度初始值
    progress=(progress>0)?progress:0;
    progressDialog.setProgress(progress);
    progressHandler.sendEmptyMessage(1);
    }
   
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.