ProgressBar的样式及用法

一.ProgressBar的样式

在XML中的第一种写法:
style="?android:attr/progressBarStyleSmallTitle"
style="?android:attr/progressBarStyleLargeInverse"
style="?android:attr/progressBarStyleLarge"
style="?android:attr/progressBarStyleInverse"
style="?android:attr/progressBarStyleSmall"
style="?android:attr/progressBarStyleHorizontal"
style="?android:attr/progressBarStyle"
style="?android:attr/progressBarStyleSmallInverse"
style="?android:attr/progressBarPadding"
在XML中的第二种写法:
Widget.ProgressBar.Horizontal

剩余的省略


二.ProgressBar的一些常用属性
Android:max    滚动条最大值
android:progress滚动条当前值
android:visibility  滚动条是否可见
android:indeterminate="true"  控制ProgressBar是否是确定的  (determinate英文意思确定的,indeterminate不确定的)
android:secondaryProgress属性是主要是为了缓存需要所涉及的,比如看视频的时候都会有一个播放进度和一个缓存进度,
 这个缓存进度就是 android:secondaryProgress属性所对应的值,播放进度就是android:progress属性对应的值

三.ProgressBar的一些常见的方法
isIndeterminate():指示进度条是否在不确定模式下
setIndeterminate(boolean indeterminate):设置不确定模式下
onSizeChanged(int w, int h, int oldw, int oldh):当进度值改变时引发此事件
setProgressBarIndeterminateVisibility(boolean value)在代码中设置进度条是否可见
setProgress(int)设置当前进度值
incrementProgressBy(int)设置当前进度值的增量(正数为增,负数为减)
setSecondaryProgress(int)设置缓存进度条进度值
incrementSecondaryProgressBy(int)设置缓存进度条进度值的增量(正数为增,负数为减)
progressBar.incrementProgressBy(5);//ProgressBar进度值增加5
progressBar.incrementProgressBy(-5);//ProgressBar进度值减少5
progressBar.incrementSecondaryProgressBy(5);//ProgressBar缓存进度条进度值增加5

progressBar.incrementSecondaryProgressBy(-5);//ProgressBar缓存进度条进度值减少5


四.ProgressBar的子类
ProgressBar的直接子类是AbsSeekBar和ContentLoadingProgressBar

AbsSeekBar的子类有SeekBar和RatingBar

SeekBar和RatingBar在这先不作介绍。


五.ProgressBar的Demo
package com.outdoors.jinghuang.demo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

import android.widget.TextView;


/**
 * Created by jing.huang on 2016/12/2.
 */
public class ProgressBarDemo extends Activity implements View.OnClickListener {

    private ProgressBar progressBar;
    private TextView showProgressDetail;
    private Button startBt;
    private static final int INCREMENT_PROGRESS = 1003;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progress_bar_demo);
        initView();
        initData();
    }

    private void initView() {
        progressBar = (ProgressBar) findViewById(R.id.progress);
        showProgressDetail = (TextView) findViewById(R.id.show_progress_detail);
        startBt = (Button) findViewById(R.id.start_bt);
        startBt.setOnClickListener(this);
    }

    private void initData() {
        //设置progress的初始值
        progressBar.setProgress(0);
        //设置ProgressBar的最大值
        progressBar.setMax(100);
        //设置progressBar为确定的
        progressBar.setIndeterminate(false);
        progressBar.setVisibility(View.GONE);
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.start_bt) {
            startBt.setClickable(false);
            progressBar.setVisibility(View.VISIBLE);
            //每次点击按钮都级那个数据初始化
            progressBar.setProgress(0);
            showProgressDetail.setText("当前进度为:" + progressBar.getProgress());
            dealProgress();
        }
    }

    /**
     * 处理进度
     */
    private void dealProgress() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (progressBar.getProgress() < progressBar.getMax()) {
                    //设置progress每次增长5
                    progressBar.incrementProgressBy(5);
                    //设置SecondaryProgress每次增长10
                    progressBar.incrementSecondaryProgressBy(10);
                    Message message = handler.obtainMessage();
                    message.what = INCREMENT_PROGRESS;
                    handler.sendMessage(message);
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }

    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case INCREMENT_PROGRESS:
                    showProgressDetail.setText("当前进度为:" + progressBar.getProgress());
                    if (progressBar.getProgress() == progressBar.getMax()) {
                        startBt.setClickable(true);
                        progressBar.setVisibility(View.GONE);
                    }
                    break;
                default:
                    break;
            }
        }
    };
}







你可能感兴趣的:(Android学习)