Android: ProgressBar 简单的进度条应用
main.xml
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends Activity {
//定义进度条
private ProgressBar progressBar;
private ProgressBar pb;
//定义 提示文本
private TextView textView;
private TextView tv;
private TextView tvsb;
private TextView tvpinfen;
//定义 定时器
private Timer timer = new Timer();
//定义拖动条
private SeekBar seekBar;
// RatingBar:星级评分条
private RatingBar ratingBar;
//Handler消息机制
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage( Message msg) {
if(msg.what == 0x011){
//获取进度条当前的进度
int currentProgress= progressBar.getProgress();
if(currentProgress >= 100){
//停止计时器
timer.cancel();
textView.setText("下载完成!");
tv.setText("完成下载!");
//弹出框
Toast.makeText(getApplication(),"下载完成!",Toast.LENGTH_SHORT).show();
return true;
}
// 认为下下载了1m ,控制进度条走动
progressBar.setProgress(currentProgress + 1);
textView.setText(progressBar.getProgress()+"%");
pb.setProgress(currentProgress + 1);
tv.setText(progressBar.getProgress()+"%");
}
//表示没有有结束
return false;
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//或获取对象
progressBar = findViewById(R.id.pbxitong);
pb = findViewById(R.id.pb);
seekBar = findViewById(R.id.sbar);
ratingBar = findViewById(R.id.rb);
//获取文本提示对象
textView = findViewById(R.id.tip);
tv = findViewById(R.id.toptip);
tvsb = findViewById(R.id.sbtip);
tvpinfen = findViewById(R.id.pingfen);
///模拟下载
//100毫秒调用一次
timer.schedule(new TimerTask() {
@Override
public void run() {
//发消息 0x011 16进制数
handler.sendEmptyMessage(0x011);
}
},0,100);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
/***进度条发送改变执行此方法
* seekBar 当前拖拉进度条
* progress 拖拉进度
* fromUser 是否来自用户拖动 true,false 代码控制
* */
tvsb.setText(progress+"%");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 开始改变进度执行此方法
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//结束拖拉执行次方法
}
});
//星级评分
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
if(rating <= 1){
tvpinfen.setText("差评");
}else if(rating > 1 && rating <= 2){
tvpinfen.setText("一般");
}else if(rating > 2 && rating <= 3){
tvpinfen.setText("比较满意");
}else if(rating > 3 && rating <= 4){
tvpinfen.setText("满意");
}else if(rating > 4 && rating <= 5){
tvpinfen.setText("非常满意");
}
}
});
}
}