进度条类组件
在 Android 中,提供了进度条、拖动条和星级评分条等进度类组件。
ProgressBar 类:进度条组件,用于显示某个耗时操作完成的百分比的组件。
SeekBar 类:允许用户通过拖动滑块来改变值的组件。
RatingBar 类:允许用户通过拖动改变星星图案的进度组件。
举例说明:进度条
核心代码如下
public class MainActivity extends AppCompatActivity {
private ProgressBar horizonP; //水平进度条
private int mProgressStatus = 0; //完成进度
private Handler mHandler; //声明一个用于处理消息的 Handler 类的对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//获得水平进度条
horizonP = (ProgressBar) findViewById(R.id.progressBar1);
mHandler = new Handler(){
@Override
public void handleMessage(Message msg){
//更新进度
if(msg.what == 0x111){
horizonP.setProgress(mProgressStatus);
}
else{
Toast.makeText(MainActivity.this, "耗时操作已经完成",
Toast.LENGTH_LONG).show();
//进度条不显示,并且不占用空间
horizonP.setVisibility(View.GONE);
}
}
};
//开启一个线程,模拟一个耗时操作
new Thread(new Runnable(){
//模拟一个耗时操作
private int doWork() {
//改变完成进度
mProgressStatus += Math.random() * 10;
try {
//线程休眠 200 毫秒
Thread.sleep(200);
} catch (InterruptedException e) {
//输出异常信息
e.printStackTrace();
}
return mProgressStatus;
}
public void run(){
//循环获取耗时操作完成的百分比,直到耗时操作结束
while(true){
//获取耗时操作完成的百分比
mProgressStatus = doWork();
//创建实例化一个消息对象
Message m = new Message();
//当完成进度不到 100 时表示耗时任务未完成
if(mProgressStatus < 100){
//设置代表耗时操作未完成的消息代码
m.what = 0x111;
//发送消息
mHandler.sendMessage(m);
} else {
//设置代表耗时操作已经完成的消息代码
m.what = 0x110;
//发送消息
mHandler.sendMessage(m);
break;
}
}
}
}).start();
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backgound"
tools:context=".MainActivity">
<!-- 水平进度条 -->
<ProgressBar
android:id="@+id/progressBar1"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft=<