ProgressBar

下面介绍两种进度条分别是圆形进度条和长形进度条的代表:

下面两张图:

图1.UC浏览网页圆形进度条效果。

 

图2.Google Market应用下载长形进度条效果.

 

下面我们看一下两都皆有之的Android自带的浏览器的效果图如下:

第一步:新建一个Android工程命名为ProgressBarDemo.

 

第二步:修改main.xml代码如下(圆形进度条和长形进度条这里样式不同用系统自带的):

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
 <ProgressBar   
         android:id="@+id/rectangleProgressBar"    
         style="?android:attr/progressBarStyleHorizontal" lp_style="?android:attr/progressBarStyleHorizontal"     
         android:layout_width="fill_parent"   
         android:layout_height="wrap_content"  
         android:visibility="gone"  
         />  
     <ProgressBar   
         android:id="@+id/circleProgressBar"    
         style="?android:attr/progressBarStyleLarge" lp_style="?android:attr/progressBarStyleLarge"  
         android:layout_width="wrap_content"   
         android:layout_height="wrap_content"  
         android:visibility="gone"   
         />  
        
     <Button android:id="@+id/button"   
             android:text="Show ProgressBar"    
             android:layout_width="wrap_content"   
             android:layout_height="wrap_content" />
</LinearLayout>   
        
     <Button android:id="@+id/button"   
             android:text="Show ProgressBar"    
             android:layout_width="wrap_content"   
             android:layout_height="wrap_content" />
</LinearLayout>   

第三步:修改ProgressBarDemo.java代码如下:

package com.lp.ecjtu;

import android.app.Activity;
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;
import android.widget.ProgressBar;

public class ProgressBarDemoActivity extends Activity {
    /** Called when the activity is first created. */
    private ProgressBar rectangleProgressBar,circleProgressBar;  
    private Button mButton;  
    protected static final int STOP = 0x10000;  
    protected static final int NEXT = 0x10001;  
    private int iCount = 0;  
      
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        rectangleProgressBar = (ProgressBar) findViewById(R.id.rectangleProgressBar);
        circleProgressBar = (ProgressBar) findViewById(R.id.circleProgressBar);
        mButton = (Button) findViewById(R.id.button);
        rectangleProgressBar.setIndeterminate(false);//设置不确定模式下
        circleProgressBar.setIndeterminate(false);
        mButton.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                rectangleProgressBar.setVisibility(View.VISIBLE);
                circleProgressBar.setVisibility(View.VISIBLE);
                rectangleProgressBar.setMax(100);
                rectangleProgressBar.setProgress(0);
                circleProgressBar.setProgress(0);
                //创建一个此线程,每秒步长为5,到100%时停止
                Thread mThread = new Thread(new Runnable() {
                    
                    @Override
                    public void run() {
                        //循环
                        for(int i=0;i<10;i++){
                            try {
                                iCount = (i+1)*10;//步长为10进行增加,直到100
                                Thread.sleep(1000);//1秒
                                //当i=9的时候进度为100,停止
                                if(i==9){
                                    Message msg = new Message();
                                    msg.what=STOP;
                                    mHandler.sendMessage(msg);
                                    break;
                                }else{
                                    Message msg = new Message();
                                    msg.what=NEXT;
                                    mHandler.sendMessage(msg);
                                }
                            } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }//
                            
                        }
                    }
                });
                mThread.start();
            }
        });
    }
    //定义一个Handler
    private Handler mHandler = new Handler(){

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case STOP:
                rectangleProgressBar.setVisibility(View.GONE);
                circleProgressBar.setVisibility(View.GONE);
                Thread.currentThread().interrupt();//中断线程
                break;
            case NEXT:
                if(!Thread.currentThread().isInterrupted()){//不中断
                    rectangleProgressBar.setProgress(iCount);//设置进度条的状态
                    circleProgressBar.setProgress(iCount);
                }
                break;
            }
        }
        
    };
}

效果图:















posted @ 2013-09-25 10:57  积淀  阅读(303)  评论(0编辑  收藏  举报