一.进度对话框 ProgressDialog
1.用法
1-new progressDialog(Context)
2-setTitle (标题)
3-setMessage (信息)
4-show() 显示
5-setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 设置样式为水平进度
6-支持跨线程访问
2.多线程
1-负责执行耗时较长的业务代码,执行完之后在关闭进度对话框
2-用法
1°继承
1>继承Thread,重写run(),调用start()启动子线程
2>new Thread(){public void run(){业务代码; 关闭对话框;}}.start();
2°实现接口
1>实现Runnable接口,传给Thread(),调用start()
2>new Thread(new Runnable(){public void run(){业务代码;关闭对话框;}}),start();
3-跨线程访问主线程的组件
runOnUiThread(new Runnable(){public void run(){访问主线程组件的代码;}})
进度对话框实现代码:
1 <?xml version="1.0" encoding="utf-8"?>
2
3 xmlns:tools="http://schemas.android.com/tools"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:paddingBottom="@dimen/activity_vertical_margin"
7 android:paddingLeft="@dimen/activity_horizontal_margin"
8 android:paddingRight="@dimen/activity_horizontal_margin"
9 android:paddingTop="@dimen/activity_vertical_margin"
10 tools:context="com.hanqi.testapp2.TestActivity5"
11 android:orientation="vertical">
12
13
15 android:layout_height="wrap_content"
16 android:text="一般对话框"
17 android:onClick="bt1_OnClick"/>
18
19
21 android:layout_height="wrap_content"
22 android:text="单选对话框"
23 android:onClick="bt2_OnClick"/>
24
25
27 android:layout_height="wrap_content"
28 android:text="复选对话框"
29 android:onClick="bt3_OnClick"/>
30
31
33 android:layout_height="wrap_content"
34 android:text="自定义对话框"
35 android:onClick="bt4_OnClick"/>
36
37
39 android:layout_height="wrap_content"
40 android:text="登陆对话框"
41 android:onClick="bt5_OnClick"/>
42
43
45 android:layout_height="wrap_content"
46 android:text="日期对话框"
47 android:onClick="bt6_OnClick"/>
48
49
51 android:layout_height="wrap_content"
52 android:text="时间对话框"
53 android:onClick="bt7_OnClick"/>
54
55
57 android:layout_height="wrap_content"
58 android:text="普通进度对话框"
59 android:onClick="bt8_OnClick"/>
60
61
63 android:layout_height="wrap_content"
64 android:text="水平进度对话框"
65 android:onClick="bt9_OnClick"/>
66
67
69 android:layout_height="wrap_content"
70 android:text="运行结果"
71 android:id="@+id/tv_2"/>
72
73
进度对话框
1 packagecom.hanqi.testapp2;2
3 importandroid.app.AlertDialog;4 importandroid.app.DatePickerDialog;5 importandroid.app.ProgressDialog;6 importandroid.app.TimePickerDialog;7 importandroid.content.DialogInterface;8 importandroid.os.Bundle;9 importandroid.support.v7.app.AppCompatActivity;10 importandroid.view.View;11 importandroid.widget.DatePicker;12 importandroid.widget.EditText;13 importandroid.widget.ImageView;14 importandroid.widget.TextView;15 importandroid.widget.TimePicker;16 importandroid.widget.Toast;17
18 importjava.util.Calendar;19
20 public class TestActivity5 extendsAppCompatActivity {21
22 @Override23 protected voidonCreate(Bundle savedInstanceState) {24 super.onCreate(savedInstanceState);25 setContentView(R.layout.activity_test5);26 }27 //普通进度对话框
28 public voidbt8_OnClick(View v)29 {30 final ProgressDialog progressDialog=new ProgressDialog(this);31
32 progressDialog.setMessage("请等待...");33 progressDialog.setTitle("进度对话框");34 progressDialog.setCancelable(false);35
36 progressDialog.show();37
38 //开启子线程39 //实现多线程:1.继承 2.实现接口40
41 //1.继承Thread,重写run()方法,调用start()
42 newThread(){43 @Override44 public voidrun() {45
46 //业务代码
47
48 try{49 //延时
50 Thread.sleep(3000);51 }52 catch(Exception e)53 {54
55 }56
57 //执行完业务代码之后58 //关闭
59 progressDialog.dismiss();60 }61 }.start();//start负责启动多线程,自动执行run()
62
63
64 }65
66 //水平进度对话框
67 public voidbt9_OnClick(View v)68 {69 final ProgressDialog progressDialog=new ProgressDialog(this);70
71 progressDialog.setTitle("水平进度对话框");72 progressDialog.setMessage("正在加载...");73 progressDialog.setCancelable(false);74
75 //设置成水平
76 progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);77
78 progressDialog.show();79
80 final TextView tv_2=(TextView)findViewById(R.id.tv_2);81
82 //启动子线程 实现接口 Runnable,run()
83 new Thread(newRunnable() {84 @Override85 public voidrun() {86
87 //模拟进度变化
88
89 for(int i=0;i<=100;i++) {90 progressDialog.setProgress(i);91
92 try{93 //延时 线程
94 Thread.sleep(200);95 } catch(Exception e) {96
97 }98 }99
100 //在子线程里访问UI线程的View
101 runOnUiThread(newRunnable() {102 @Override103 public voidrun() {104
105 tv_2.setText("下载完成");106 }107 });108
109
110 //执行完业务代码之后111 //关闭
112 progressDialog.dismiss();113 }114 }).start();115 }116
117 }
进度对话框
普通进度对话框
水平进度对话框
原文:http://www.cnblogs.com/cycanfly/p/5495174.html