zoukankan      html  css  js  c++  java
  • 我的Android笔记(十)—— ProgressDialog的简单应用,等待提示

    在应用中经常会用到一些费时的操作,需要用户进行等待,比如加载网页内容……

    这时候就需要一个提示来告诉用户程序正在执行,并没有假死或者真死……囧……

    而ProgressBar、ProgressDialog等就是专门干这个的。

    以ProgressDialog为例,一般的使用它步骤为:在执行耗时间的操作之前弹出ProgressDialog提示用户,然后开一个新线程,在新线程里执行耗时的操作,执行完毕之后通知主程序将ProgressDialog结束。

    以下是一个demo,很简单的用法:

    1. package com.android.ui; 
    2.  
    3. import android.app.Activity; 
    4. import android.app.ProgressDialog; 
    5. import android.os.Bundle; 
    6. import android.os.Handler; 
    7. import android.os.Message; 
    8. import android.view.View; 
    9. import android.view.View.OnClickListener; 
    10. import android.widget.Button; 
    11.  
    12. publicclass MainActivity extends Activity { 
    13.  
    14.     private Button button; 
    15.     private ProgressDialog pd; 
    16.  
    17.     @Override 
    18.     publicvoid onCreate(Bundle savedInstanceState) { 
    19.         super.onCreate(savedInstanceState); 
    20.         setContentView(R.layout.main); 
    21.  
    22.         button = (Button) findViewById(R.id.button1); 
    23.  
    24.         button.setOnClickListener(new OnClickListener() { 
    25.             @Override 
    26.             publicvoid onClick(View v) { 
    27.                 /* 显示ProgressDialog */ 
    28.                 pd = ProgressDialog.show(MainActivity.this, "标题", "加载中,请稍后……"); 
    29.  
    30.                 /* 开启一个新线程,在新线程里执行耗时的方法 */ 
    31.                 new Thread(new Runnable() { 
    32.                     @Override 
    33.                     publicvoid run() { 
    34.                         spandTimeMethod();// 耗时的方法  
    35.                         handler.sendEmptyMessage(0);// 执行耗时的方法之后发送消给handler  
    36.                     } 
    37.  
    38.                 }).start(); 
    39.             } 
    40.         }); 
    41.  
    42.     } 
    43.  
    44.     privatevoid spandTimeMethod() { 
    45.         try
    46.             Thread.sleep(5000); 
    47.         } catch (InterruptedException e) { 
    48.             // TODO Auto-generated catch block  
    49.             e.printStackTrace(); 
    50.         } 
    51.     } 
    52.  
    53.     Handler handler = new Handler() { 
    54.         @Override 
    55.         publicvoid handleMessage(Message msg) {// handler接收到消息后就会执行此方法  
    56.             pd.dismiss();// 关闭ProgressDialog  
    57.         } 
    58.     }; 
    package com.android.ui;
    
    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.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity {
    
    	private Button button;
    	private ProgressDialog pd;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		button = (Button) findViewById(R.id.button1);
    
    		button.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				/* 显示ProgressDialog */
    				pd = ProgressDialog.show(MainActivity.this, "标题", "加载中,请稍后……");
    
    				/* 开启一个新线程,在新线程里执行耗时的方法 */
    				new Thread(new Runnable() {
    					@Override
    					public void run() {
    						spandTimeMethod();// 耗时的方法
    						handler.sendEmptyMessage(0);// 执行耗时的方法之后发送消给handler
    					}
    
    				}).start();
    			}
    		});
    
    	}
    
    	private void spandTimeMethod() {
    		try {
    			Thread.sleep(5000);
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	Handler handler = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {// handler接收到消息后就会执行此方法
    			pd.dismiss();// 关闭ProgressDialog
    		}
    	};
    }
    
    main.xml中只有一个Button,就不贴了,程序应该很好理解,点击按钮后弹出ProgressDialog,在新线程中执行耗时操作(Thread.sleep(5000);),执行完毕之后通知handler,结束ProgressDialog。

    运行效果如下:


  • 相关阅读:
    第六章 实验报告(函数与宏定义)
    第三次实验报告
    第五章 循环结构课后反思
    第二次实验报告
    第一次实验报告
    第一次作业
    第九章 结构体与共用体
    第八章 指针实验
    第7章 数组实验
    第六章 函数和宏定义实验(2)
  • 原文地址:https://www.cnblogs.com/LiaoHao/p/3291799.html
Copyright © 2011-2022 走看看