默認爲環形樣式
@android:style/Widget.ProgressBar.Horizontal 水平進度條(粗)
@android:style/Widget.ProgressBar.Inverse 普通大小環形進度條
@android:style/Widget.ProgressBar.Large 大環形進度條
@android:style/Widget.ProgressBar.Large.Inverse 大環形進度條
@android:style/Widget.ProgressBar.Small 小環形進度條
@android:style/Widget.ProgressBar.Small.Inverse 小環形進度條
max 設置進度條最大值
progress 設置進度條已完成的進度值
對應java代碼 則是加上get 與 set
上圖對應的java代碼如下
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到控件
final ProgressBar bigProgressBar = (ProgressBar) findViewById(R.id.bigprogressBar);
final ProgressBar smallProgressBar = (ProgressBar) findViewById(R.id.smallprogressBar);
final TextView tv_progress1 = (TextView) findViewById(R.id.tv_progress1);
final TextView tv_progress2 = (TextView) findViewById(R.id.tv_progress2);
// 匿名內部類實現按鈕點擊事件,開始加載
findViewById(R.id.btn_load).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
start(bigProgressBar, tv_progress1);
start(smallProgressBar, tv_progress2);
}
});
}
// 進度條開始變化的方法
public void start(final ProgressBar progressBar, final TextView textView) {
// 耗時任務放在子線程種進行
new Thread() {
private int nowProgress;
private int maxProgress;
public void run() {
// 得到進度條當前的值
nowProgress = progressBar.getProgress();
// 得到進度條最大值
maxProgress = progressBar.getMax();
// 噹噹前進度小於最大進度值時
while (nowProgress < maxProgress) {
nowProgress++;
progressBar.setProgress(nowProgress);
// 表示在UI線程種更新TextView因爲子線程不能更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
// 設置TextView的內容
textView.setText(nowProgress + "/" + maxProgress);
}
});
try {
// 延時模擬加載進度
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}.start();
}
}
二.拖動條
拖動條 SeekBar 外觀和水平進度條相似,不過拖動條顧名思義爲可拖動的水平進度條
首先看效果圖 SeekBar改變手機音量
SeekBar與ProgressBar類似 依然有 max 與 progress屬性,對應java代碼爲set get
SeekBar有監聽事件 即 setOnSeekBarChangeListener()
上圖效果java代碼如下
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到SeekBar
SeekBar seekBar = (SeekBar) findViewById(R.id.seekbar);
// 獲取音量管理器
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
// 獲取當前音樂音量的值 STREAM_MUSIC
int index = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
// 獲取音樂音量的最大值
int max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
// 設置拖動條當前值
seekBar.setProgress(index);
// 設置拖動條的最大值
seekBar.setMax(max);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 拖動停止時調用
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 拖動開始時調用
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 拖動改變時調用
// 獲取seeKbar的當前值
int seekBarvalue = seekBar.getProgress();
// 設置音量大小,並在UI上顯示 AudioManager.FLAG_SHOW_UI
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, seekBarvalue, AudioManager.FLAG_SHOW_UI);
}
});
}
}