Android高級組件之進度條 (progressBar)

## Android高級組件之進度條 (progressBar)##
1.說明
在Android中,進度條使用ProgressBar表示,用於向用戶顯示某個耗時操作完成的百分比。
2.XML中的重要屬性
style=”?android:attr/progressBarStyleHorizontal”水平進度條
style=”?android:attr/progressBarStyleLarge”大的圓形進度條
style=”?android:attr/progressBarStyleSmall”小的圓形進度條
如果不設樣式則爲正常的圓形進度條
android:max 設置進度條最大值
android:progress 用於指定進度條一完成的進度值
android:progressDrawable 用於進度條軌道的繪製方式
3,,重要方法
getMax():返回這個進度條的範圍的上限
getProgress():返回進度
incrementProgressBy(int diff):指定增加的進度

XML代碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">


    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar"/>
</LinearLayout>

 
Java代碼

package com.lhd.gx.myapplication;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private ProgressBar  progressBar;//進度條
    private int progressStatu=0;  //表示當前已經完成的進度
    private Handler handler;//聲明一個用於處理消息Handler類對象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        progressBar= (ProgressBar) findViewById(R.id.progressBar);
        handler = new Handler(){

            @Override
            public void handleMessage(Message msg) {

                if(msg.what==0x111){
                    progressBar.setProgress(progressStatu);//更新進度
                }
                else {
                    Toast.makeText(MainActivity.this,"進度已完成",Toast.LENGTH_SHORT).show();
                    progressBar.setVisibility(View.GONE);//進度條不可見
                }

            }
        };
        //定義一個線程
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                    progressStatu = work(); //獲取耗時操作完成的百分比

                    Message m=new Message();
                    if(progressStatu <100){
                        m.what=0x111;
                        handler.sendMessage(m); //發送信息
                    }else{
                        m.what=0x110;
                        handler.sendMessage(m); //發送消息
                        break;
                    }
                }

            }

      //模擬一個耗時操作
        private int work(){
            progressStatu+=Math.random()*10;
            try {
                Thread.sleep(300);//休眠300毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }


            return progressStatu;
        }



        }).start();

    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章