16,//ProgressBar使用
xml文件中定义ProgressBar
//水平进度条
1 <ProgressBar 2 android:id="@+id/firstBar" 3 style="?android:attr/progressBarStyleHorizontal" 4 android:layout_width="200dp" 5 android:layout_height="wrap_content" 6 android:visibility="gone"<!--默认状态不可见 --> 7 />
//默认圆圈形状滚动风格 style="?android:attr/progressBarStyle"
//Java文件,点击按钮启动滚动条
1 private int i = 0; 2 @Override 3 public void onClick(View v) { 4 // TODO Auto-generated method stub 5 if(i == 0){ 6 //设置进度条处于可见的状态 7 firstBar.setVisibility(View.VISIBLE); 8 secondBar.setVisibility(View.VISIBLE); 9 }else if(i < firstBar.getMax()){ 10 //设置主进度条的当前值 11 firstBar.setProgress(i); 12 //设置第二进度条的当前值 13 firstBar.setSecondaryProgress(i + 10); 14 //因为默认的进度条无法显示进行的状态 15 //secondBar.setProgress(i); 16 } 17 else{ 18 firstBar.setVisibility(View.GONE); 19 secondBar.setVisibility(View.GONE); 20 } 21 //进度条总长度的10%,逐次增加 22 i = i + 10; 23 }
17,//ProgressBar和Handler
//main.xml文件中
1 <ProgressBar 2 android:id="@+id/handlerBar" 3 android:layout_width="200dip" 4 android:layout_height="wrap_content" 5 style="?android:attr/progressBarStyleHorizontal" 6 android:visibility="gone" 7 />
//Java文件中
//启动按钮
1 启动按钮 onClick(View v) { 2 //调用方法将进度条设置为可见状态 3 bar.setVisibility(View.VISIBLE); 4 //将第一个线程添加到线程队列中 5 updateBarHandler.post(updateThread); 6 } 7 //使用匿名内部类来复写Handler当中的handerMessage方法 8 Handler updateBarHandler = new Handler(){ 9 10 @Override 11 public void handleMessage(Message msg) { 12 //设置ProgressBar的当前值 13 bar.setProgress(msg.arg1); 14 //将线程添加到线程队列中 15 updateBarHandler.post(updateThread); 16 } 17 }; 18 //线程类,该类使用匿名内部类的方式进行声明 19 Runnable updateThread = new Runnable(){ 20 int i = 0; 21 @Override 22 public void run() { 23 System.out.println("Begin Thread " + i); 24 i = i + 10 ; 25 //得到一个消息对象,Message类是由Android操作系统提供 26 Message msg = updateBarHandler.obtainMessage(); 27 //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员传递消息,优点是系统性能消耗较少 28 msg.arg1 = i ; 29 try{ 30 //设置前线程睡眠1000ms 31 Thread.sleep(1000); 32 }catch(InterruptedException e){ 33 e.printStackTrace(); 34 } 35 if(i <= 100){ 36 //将msg对象加入到消息队列当中 37 updateBarHandler.sendMessage(msg); 38 } 39 else{ 40 //如果当i的值为100时,就将线程对象从handler当中移除,Progress停止 41 updateBarHandler.removeCallbacks(updateThread); 42 } 43 } 44 };
这一部分可能有点问题,先记录这里