ProgressBar作用是在界面上显示一个进度条。
用法也很简单,代码如下:
<ProgressBar android:id="@+id/progressbar" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" //设置进度条的样式为水平进度条(默认为圆形进度条) android:max="100" //设置一个最大值 /> 提到进度条就要提到android控件里面的可见属性:visibility,这个属性下面有3个可选值: 1.VISIBLE 表示控件是可见的(默认) 2.INVISIBLE 表示控件是不可见的(仍然占据着原来的空间) 3.GONE 表示控件是不可见的(不再占据任何屏幕空间) 下面就通过一个例子来详细说明一下: public class MainActivity extends AppCompatActivity { private Button buttonOne; private ProgressBar progressBar; private Handler handler; private TimerTask task; //这是一个抽象类 private Timer timer; //定义一个定时器 Timer是一个普通的类,里面有几个方法 private int progress = 0; //初始化进度条的值 private boolean isfull = false; //用来判断进度条是否已经读取完 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonOne = (Button)findViewById(R.id.buttonOne); progressBar = (ProgressBar)findViewById(R.id.progressbar); timer = new Timer(); buttonOne.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { timer.schedule(task,0,100); //每0.1秒执行一次 /* 上面的函数的原形是这样子的:timer.schedule(new TimerTask(){ void run()},0, 100); 第一个参数是 TimerTask类的对象 ,我们实现TimerTask的run()方法就是要周期执行的任务; 第二个参数两种类型,第一种是long类型,表示多长时间后开始执行,另一种是Date类型,表示从那个时间后开始执行;“0”则表示无延迟 第三个参数就是执行的周期,为long类型。 */ } }); //用handler对象里面的handleMessage方法来进行消息处理. handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what){ case 0x001: progressBar.setVisibility(View.VISIBLE); //设置进度条为可见 buttonOne.setVisibility(View.INVISIBLE); //设置按钮为隐藏 progressBar.setProgress(progress); //改变进度条的值 break; case 0x002: progressBar.setVisibility(View.GONE); //删除进度条 buttonOne.setVisibility(View.VISIBLE); //设置按钮为可见 task.cancel(); //结束线程 timer.cancel(); Toast.makeText(MainActivity.this,"加载完成",Toast.LENGTH_LONG).show(); break; } } }; task = new TimerTask() { public void run() { if (!isfull){ if (progress < 100){ progress++; //发送消息 handler.sendEmptyMessage(0x001); }else{ handler.sendEmptyMessage(0x002); } } } }; } } 运行效果如下: 1.进入界面进度条,按钮均为可见状态。 2.点击按钮,按钮隐藏,进度条每0.1秒涨1%(最大值为100,每次执行时+1) 3.进度条读取完成时,进度条消息(位置也不存在了),按钮再次为可见 有什么不好的地方,希望大家能说出来,你的指出,就是我的进步。 最后附上一个网址,对android消息处理机制不熟的人可以去看看: http://www.cnblogs.com/codingmyworld/archive/2011/09/14/2174255.html