Android 学习心得(6)——ProgressBar(进度条)

没什么技术含量就是对系统进度条的简单应用

贴上代码

  1 package cn.bwl.progressbar;
  2
  3 import android.support.v7.app.ActionBarActivity;
  4 import android.view.View;
  5 import android.widget.Button;
  6 import android.widget.ProgressBar;
  7 import android.widget.TextView;
  8 import android.annotation.SuppressLint;
  9 import android.os.Bundle;
 10 import android.os.Handler;
 11 import android.os.Message;
 12
 13 public class MainActivity extends ActionBarActivity {
 14      private TextView text1 ;
 15      private TextView text2 ;
 16      private TextView text3 ;
 17      private ProgressBar bar1 ;
 18      private ProgressBar bar2 ;
 19      private ProgressBar bar3 ;
 20      private Button button ;
 21      private int counter;
 22      //自定义Handler消息
 23      protected static final int STOP_1 = 0x1;
 24      protected static final int STOP_2 = 0x2;
 25      protected static final int STOP_3 = 0x3;
 26      protected static final int THREADING_1 = 0x4;
 27      protected static final int THREADING_2 = 0x5;
 28      protected static final int THREADING_3 = 0x6;
 29
 30      //定义Handler
 31      @SuppressLint("HandlerLeak")
 32      private Handler handler =new Handler(){
 33             @Override
 34             //当有消息发送出来的时候就执行Handler的这个方法
 35             public void handleMessage(Message msg){
 36             switch (msg.what) {
 37             case STOP_1:
 38                 text1.setText("进度条执行结束");
 39                 bar1.setVisibility(View.GONE);//设置隐藏进度条
 40                 break;
 41             case STOP_2:
 42                 text2.setText("进度条执行结束");
 43                 bar2.setVisibility(View.GONE);//设置隐藏进度条
 44                 break;
 45
 46             case STOP_3:
 47                 text3.setText("进度条执行结束");
 48                 bar3.setVisibility(View.GONE);//设置隐藏进度条
 49                 break;
 50
 51             case THREADING_1:
 52                 bar1.setProgress(counter);
 53                 //将进度条显示在TextView控件中
 54                 text1.setText(getResources().getText(counter, "进度条开始")
 55                         + Integer.toString(counter) + "%\n" + "进度:"
 56                                 + Integer.toString(bar1.getProgress()) + "\n"
 57                                 + "Indeterminate:"
 58                                 + Boolean.toString(bar1.isIndeterminate()));
 59                 break;
 60             case THREADING_2:
 61                 bar2.setProgress(counter);
 62                 //将进度条显示在TextView控件中
 63                 text2.setText(getResources().getText(counter, "进度条开始")
 64                         + Integer.toString(counter) + "%\n" + "进度:"
 65                                 + Integer.toString(bar2.getProgress()) + "\n"
 66                                 + "Indeterminate:"
 67                                 + Boolean.toString(bar2.isIndeterminate()));
 68                 break;
 69             case THREADING_3:
 70                 bar3.setProgress(counter);
 71                 //将进度条显示在TextView控件中
 72                 text3.setText(getResources().getText(counter, "进度条开始")
 73                         + Integer.toString(counter) + "%\n" + "进度:"
 74                                 + Integer.toString(bar3.getProgress()) + "\n"
 75                                 + "Indeterminate:"
 76                                 + Boolean.toString(bar3.isIndeterminate()));
 77                 break;
 78
 79             default:
 80                 break;
 81             }
 82             super.handleMessage(msg);
 83             }
 84             };
 85     @Override
 86     protected void onCreate(Bundle savedInstanceState) {
 87         super.onCreate(savedInstanceState);
 88         setContentView(R.layout.activity_main);
 89         //获取控件句柄
 90         text1 = (TextView) this.findViewById(R.id.text1);
 91         text2 = (TextView) this.findViewById(R.id.text2);
 92         text3 = (TextView) this.findViewById(R.id.text3);
 93         bar1 = (ProgressBar) this.findViewById(R.id.bar1);
 94         bar2 = (ProgressBar) this.findViewById(R.id.bar2);
 95         bar3 = (ProgressBar) this.findViewById(R.id.bar3);
 96         button = (Button) this.findViewById(R.id.button);
 97         //设置indeterminate模式为false
 98         bar1.setIndeterminate(false);
 99         bar2.setIndeterminate(false);
100         bar3.setIndeterminate(false);
101         //button设置监听器
102         button.setOnClickListener(new View.OnClickListener() {
103
104             @Override
105             public void onClick(View arg0) {
106                 //传输文本进入textView
107                 text1.setText("水平进度条开始!");
108                 text2.setText("小圆圈进度条开始!");
109                 text3.setText("大圆圈进度条开始!");
110                 //设置显示三个进度条控件
111                 bar1.setVisibility(View.VISIBLE);
112                 bar2.setVisibility(View.VISIBLE);
113                 bar3.setVisibility(View.VISIBLE);
114                 //指定三个进度条最大显示
115                 bar1.setMax(100);
116                 bar2.setMax(100);
117                 bar3.setMax(100);
118                 //设置进度条初始值
119                 bar1.setProgress(0);
120                 bar2.setProgress(0);
121                 bar3.setProgress(0);
122                 /*
123                  * 设置新线程
124                  */
125                 new Thread(new Runnable() {
126
127                     @Override
128                     public void run() {
129                         //进度条一共跳动10次 做10次循环
130                         for(int i=0;i<10;i++){
131                             try {
132                                 //记录循环进度
133                                 counter =(i+1)*10;
134                                 //线程睡眠1秒
135                                 Thread.sleep(1000);
136                                 //运行到10秒的时候结束
137                                 if(i==9){
138                                     //新建msg
139                                     Message msg1 = new Message();
140                                     Message msg2 = new Message();
141                                     Message msg3 = new Message();
142                                     //用what传递参数,制定传递到handler过去的参数
143                                     msg1.what = MainActivity.STOP_1;
144                                     msg2.what = MainActivity.STOP_2;
145                                     msg3.what = MainActivity.STOP_3;
146                                     //发送消息
147                                     MainActivity.this.handler.sendMessage(msg1);
148                                     MainActivity.this.handler.sendMessage(msg2);
149                                     MainActivity.this.handler.sendMessage(msg3);
150                                 }else{
151                                     //不结束循环每次执行的进程
152                                     //新建msg
153                                     Message msg1 = new Message();
154                                     Message msg2 = new Message();
155                                     Message msg3 = new Message();
156                                     //用what传递参数,制定传递到handler过去的参数
157                                     msg1.what = MainActivity.THREADING_1;
158                                     msg2.what = MainActivity.THREADING_2;
159                                     msg3.what = MainActivity.THREADING_3;
160                                     //发送消息
161                                     MainActivity.this.handler.sendMessage(msg1);
162                                     MainActivity.this.handler.sendMessage(msg2);
163                                     MainActivity.this.handler.sendMessage(msg3);
164                                 }
165                             } catch (InterruptedException e) {
166                                 e.printStackTrace();
167                             }
168                         }
169                     }
170                 }).start();
171
172             }
173         });
174
175     }
176
177
178 }

MainActivity.java

界面布局

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/container"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7     tools:context="cn.bwl.progressbar.MainActivity"
 8     tools:ignore="MergeRootFrame" >
 9
10     <TextView
11         android:id="@+id/text1"
12         android:layout_width="wrap_content"
13         android:layout_height="wrap_content" />
14
15     <ProgressBar
16         android:id="@+id/bar1"
17         style="?android:attr/progressBarStyleHorizontal"
18         android:layout_width="fill_parent"
19         android:layout_height="wrap_content" />
20
21     <TextView
22         android:id="@+id/text2"
23         android:layout_width="wrap_content"
24         android:layout_height="wrap_content" />
25
26     <ProgressBar
27         android:id="@+id/bar2"
28         style="?android:attr/progressBarStyleSmall"
29         android:layout_width="fill_parent"
30         android:layout_height="wrap_content" />
31
32     <TextView
33         android:id="@+id/text3"
34         android:layout_width="wrap_content"
35         android:layout_height="wrap_content" />
36
37     <ProgressBar
38         android:id="@+id/bar3"
39         style="?android:attr/progressBarStyleLarge"
40         android:layout_width="fill_parent"
41         android:layout_height="wrap_content" />
42
43     <Button
44         android:id="@+id/button"
45         android:layout_width="wrap_content"
46         android:layout_height="wrap_content"
47         android:text="@string/ok" />
48
49 </LinearLayout>

activity_main.xml

做这个的时候竟然出奇的没有碰到任何问题,简直是奇迹

时间: 2024-10-05 20:00:11

Android 学习心得(6)——ProgressBar(进度条)的相关文章

Android学习笔记_76_Android ProgressBar 进度条

android 进度条的样式  例1:(默认样式(中等圆形))Xml代码 <ProgressBar      android:id="@+id/progressBar1"     android:layout_width="wrap_content"      android:layout_height="wrap_content"      /> 例2:(超大圆形)Xml代码 <ProgressBar      android

Android自学笔记之ProgressBar进度条的属性、常用方法及使用

1,属性: android:progress="0"  ----设置第一层进度条的初始值 android:max="100"  ---设置进度条的最大值 android:secondaryProgress="10"  --设置第二层进度条的初始值 2.进度条的常用方法: int getMax():返回这个进度条的最大值 int getProgress():返回进度条当前进度 int getSecondProgress():返回当前次要进度 voi

Android基础控件ProgressBar进度条的使用

1.简介 ProgressBar继承与View类,直接子类有AbsSeekBar和ContentLoadingProgressBar, 其中AbsSeekBar的子类有SeekBar和RatingBar! android:max:进度条的最大值 android:progress:进度条已完成进度值 android:progressDrawable:设置轨道对应的Drawable对象 android:indeterminate:如果设置成true,则进度条不精确显示进度 android:indet

【Android 初学】8、进度条(ProgressBar、SeekBar、RatingBar)

Start Android 现在发现每个控件的使用方法都大同小异,所以决定加快学习步骤,这一部分的笔记就写的简略了. 1.Android当中的进度条 2.各种进度条之间的关系 3.ProgressBar进度条的风格 4.ProgressBar的使用方法 ProgressBar的Style 主要有两大类 进度条的主要属性 进度条最大值:max 当前进度:progress 次要进度的值:SecondaryProgress 1.SeekBar的主要属性 1)进度条最大值:max 2)当前进度:prog

Android基础入门教程——2.3.7 ProgressBar(进度条)

Android基础入门教程--2.3.7 ProgressBar(进度条) 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条:或者当在进行一些比较 耗时的操作,需要等待一段较长的时间,这个时候如果没有提示,用户可能会以为程序Carsh或者手机死机 了,这样会大大降低用户体验,所以在需要进行耗

android之实现ProgressBar进度条组件

android之实现ProgressBar进度条组件: (注意:横向那个进度条要android4.0以上版本支持,也就是最低(android:minSdkVersion="14")支持) 布局:layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.a

Android常用控件:进度条

各种进度条属于 ProgressBar的子类 Sytle: 水平风格:Horizontal小风格:Small大风格:Large反向风格:Inverse小反向风格:Small.Inverse大反向风格:Large.Inverse 设置style:   style="?android:attr/progressBarStyle..." 主要属性:最大值:max当前进度:progress次要进度值:SecondaryProgress --效果类似于看电影那些缓冲 判断进度条是转圈还是水平的方

步步为营_Android开发课[23]_用户界面之ProgressBar(进度条)

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:用户界面之ProgressBar(进度条) - 自定义ProgressBar进度条(实例): activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <Linea

Android中的webview的进度条

<application android:icon="@drawable/hunqin" android:label="@string/app_name" android:theme="@android:style/Theme.Light" > 主题 android:theme------->必须不能使Theme.Light.NoTitleBar 否则不起作用 requestWindowFeature(Window.FEATUR