2017最新详解Android中对话框之ProgressDialog

这篇文章主要介绍了详解Android中提示对话框(ProgressDialog和DatePickerDialog和TimePickerDialog&PopupWindow)的相关资料,需要的朋友可以参考下:

ProgressDialog(精度条对话框):

1.直接调用ProgressDialog提供的静态方法show()显示

2.创建ProgressDialog,再设置对话框的参数,最后show()出来


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.example.test3;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity implements View.OnClickListener{
   private Button btn_one;
   private Button btn_two;
   private Button btn_three;
   private ProgressDialog pd1 = null ;
   private ProgressDialog pd2 = null ;
   private final static int MAXVALUE = 100 ;
   private int progressStart = 0 ;
   private int add = 0 ;
   private Context mContext = null ;
   //定义一个用于更新进度的Handler,因为只能由主线程更新界面,所以要用Handler传递信息
   final Handler hand = new Handler()
   {
     @Override
     public void handleMessage(Message msg) {
       //这里的话如果接受到信息码是123
       if (msg.what == 123 )
       {
         //设置进度条的当前值
         pd2.setProgress(progressStart);
       }
       //如果当前大于或等于进度条的最大值,调用dismiss()方法关闭对话框
       if (progressStart >= MAXVALUE)
       {
         pd2.dismiss();
       }
     }
   };
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super .onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     mContext = MainActivity. this ;
     bindViews();
   }
   private void bindViews() {
     btn_one = (Button) findViewById(R.id.btn1);
     btn_two = (Button) findViewById(R.id.btn2);
     btn_three = (Button) findViewById(R.id.btn3);
     btn_one.setOnClickListener( this );
     btn_two.setOnClickListener( this );
     btn_three.setOnClickListener( this );
   }
   @Override
   public void onClick(View v) {
     switch (v.getId()){
       case R.id.btn1:
         //这里的话参数依次为,上下文,标题,内容,是否显示进度,是否可以用取消按钮关闭
         ProgressDialog.show(MainActivity. this , "资源加载中" , "资源加载中,请稍后..." , false , true );
         break ;
       case R.id.btn2:
         pd1 = new ProgressDialog(mContext);
         //依次设置标题,内容,是否用取消按钮关闭,是否显示进度
         pd1.setTitle( "软件更新中" );
         pd1.setMessage( "软件正在更新中,请稍后..." );
         pd1.setCancelable( true );
         //这里是设置进度条的风格,HORIZONTAL是水平进度条,SPINNER是圆形进度条
         pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
         pd1.setIndeterminate( true );
         //调用show()方法将ProgressDialog显示出来
         pd1.show();
         break ;
       case R.id.btn3:
         //初始化属性
         progressStart = 0 ;
         add = 0 ;
         //依次设置一些属性
         pd2 = new ProgressDialog(MainActivity. this );
         pd2.setMax(MAXVALUE);
         pd2.setTitle( "文件读取中" );
         pd2.setMessage( "文件加载中,请稍后..." );
         //这里设置为不可以通过按取消按钮关闭进度条
         pd2.setCancelable( false );
         pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
         //这里设置的是是否显示进度,设为false才是显示的哦!
         pd2.setIndeterminate( false );
         pd2.show();
         //这里的话新建一个线程,重写run()方法,
         new Thread()
         {
           public void run()
           {
             while (progressStart < MAXVALUE)
             {
               //这里的算法是决定进度条变化的,可以按需要写
               progressStart = 2 * usetime() ;
               //把信息码发送给handle让更新界面
               hand.sendEmptyMessage( 123 );
             }
           }
         }.start();
         break ;
     }
   }
   //这里设置一个耗时的方法:
   private int usetime() {
     add++;
     try {
       Thread.sleep( 100 );
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
     return add;
   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值