Android 控件ProgressBar进度条
Android 控件---ProgressBar进度条
下面详细介绍ProgressBar
一、说明
在某些操作的进度中的可视指示器,为用户呈现操作的进度,视频一般都有进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。
二、常用属性
style="?android:attr/progressBarStyle" 默认为圆形
style="?android:attr/progressBarStyleHorizontal" 水平样式
android:max="100" 设置最大值
android:progress="33" 设置当前进度
三、重要方法
getMax():返回这个进度条的范围的上限
getProgress():返回进度
getSecondaryProgress():返回次要进度
incrementProgressBy(int diff):指定增加的进度
isIndeterminate():指示进度条是否在不确定模式下
setIndeterminate(boolean indeterminate):设置不确定模式下
setVisibility(int v):设置该进度条是否可视
注意:1、给线程设置休眠会出现错误
Thread.sleep(100);//抛异常 SystemClock.sleep(100);//不会抛异常
2、不能在主线程中执行耗时的操作,只能在子线程中操作 ,
另外,在子线程中不能操作主线程中的控件 (ProgressBar除外)
四、重要事件
onSizeChanged(int w, int h, int oldw, int oldh):当进度值改变时引发此事件
五、实例
1.布局文件 (activity_main.xml代码)
<?xml version="1.0" encoding="utf-8"?>
2、代码文件(MainActivity.java代码)
package com.example.a0911_homework_05;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { //初始化控件 private ProgressBar pb_main_pb1; private int progress; private TextView tv_main_tv1; private myHandler myHandler = new myHandler(); private int code = 1;//代表哪一部视频 private class myHandler extends Handler{//通过Handler给主线程发送信息 @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(code == msg.what){ progress++;//每执行一遍就加1 pb_main_pb1.setProgress(progress); tv_main_tv1.setText(progress + "%");//给百分比设置值 } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pb_main_pb1 = this.findViewById(R.id.pb_main_pb1);//获取进度条控件 tv_main_tv1 = this.findViewById(R.id.tv_main_tv1); } public void setProgress(View view) {//点击就开始下载 if(0 == progress){//如果进度为0 new MyThread().start();//开始线程 } } private class MyThread extends Thread{//子线程 @Override public void run() {//重写线程 super.run(); while(true){ try { Thread.sleep(100);//给线程设置睡眠时间0.1s } catch (InterruptedException e) { e.printStackTrace(); } if(progress == 100){//如果进度为100就终止 progress = 0;//恢复默认值0 break;//结束终止 } //触发handleMessage方法 Message msg = new Message(); msg.what = 1;//给线程做标识 myHandler.sendMessage(msg); } } }}
3:线程小结
SubThread->MainThread 错误
SubThread->Handler->MainThread 正确
上面的为进度条,下面灰色条为按钮,点击按钮进度条就会运行
更多相关文章
- Android:自定义控件你应该知道的这些事_TypedArray
- Android(4)---Android 控件布局常用属性
- Android中线程同步之Mutex与Condtion的用法
- Android 时间滚动控件
- android 计时器线程