Android开发学习笔记(十三) ProgressDialog学习

 ProgressDialog是用在耗时操作上的一种组件。

基本原理是新建一个线程去执行耗时操作,原线程执行 ProgressDialog对话框的绘制。

两种方式实现ProgressDialog

第一种方式是直接使用ProgressDialog pd = ProgressDialog.show(MainActivity.this, "Loading...", "Please wait...", true, false);函数,将标题和信息一次性给出,适用于简单对话框。

第二种是

ProgressDialog  pd = new ProgressDialog(MainActivity.this);
pd.setTitle("loading");
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("please wait,please~~");
pd.show();

除此之外ProgressDialog  还有很多方法设置对话框。

setProgressStyle的参数

1)ProgressDialog.STYLE_HORIZONTAL

int STYLE_HORIZONTAL Creates a ProgressDialog with a horizontal progress bar. 

2)ProgressDialog.STYLE_SPINNER 

int STYLE_SPINNER Creates a ProgressDialog with a circular, spinning progress bar.


最终结果:

三张图片依次为,初始状态,按下第一个按钮,按下第二个按钮。

Android开发学习笔记(十三) ProgressDialog学习_第1张图片Android开发学习笔记(十三) ProgressDialog学习_第2张图片Android开发学习笔记(十三) ProgressDialog学习_第3张图片

xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<Button android:id="@+id/btn"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="press to begin"/>
<Button android:id="@+id/btn2"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="press to begin,style"/>
<TextView android:id="@+id/txt"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="begin"
    />
</LinearLayout>


MainActivity.java

package com.xujin.progressbar;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    
	private TextView txt;
	private Button Btn;
	private Button Btn2;
	private ProgressDialog pd;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (TextView)findViewById(R.id.txt);
        Btn = (Button)findViewById(R.id.btn);
        Btn2 = (Button)findViewById(R.id.btn2);
        Btn.setOnClickListener(new View.OnClickListener() {			
			@Override
			public void onClick(View v) {				
				pd = ProgressDialog.show(MainActivity.this, "Loading...", "Please wait...", true, false);
				new Thread(){
					@Override
					public void run() {
						//需要花时间的函数
						try {  
				            Thread.sleep(5000);  
				        } catch (InterruptedException e) {  
				            // TODO Auto-generated catch block  
				            e.printStackTrace();  
				        }  						
						//向handler发消息
						handler.sendEmptyMessage(0);
					}}.start();
			}
        });
        Btn2.setOnClickListener(new View.OnClickListener() {			
			@SuppressWarnings("deprecation")
			@Override
			public void onClick(View v) {				
				pd = new ProgressDialog(MainActivity.this);
				pd.setTitle("loading");
				pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
				pd.setMessage("please wait,please~~");
				pd.show();
				new Thread(){
					@Override
					public void run() {
						//需要花时间的函数
						try {  
				            Thread.sleep(5000);  
				        } catch (InterruptedException e) {  
				            // TODO Auto-generated catch block  
				            e.printStackTrace();  
				        }  						
						//向handler发消息
						handler.sendEmptyMessage(0);
					}}.start();
			}
        });
    }
    

    private Handler handler = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			pd.dismiss();			
			txt.setText("End");
		}};    
}



你可能感兴趣的:(thread,thread,android,android,android,ProgressDialog)