进度条:相信大家也都明白,有了进度条,那么给用户就不会造成,长时间的等待而觉得自己的程序挂掉了,所以,这个小demo还是可一看看的,那么接下来,然我们来看看到底是如何实现的。
1.效果图:
2.布局说明:
1.textview显示进度条
2.ProgressBar进度条
3.进度条配置:
<ProgressBar android:id="@+id/pb" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" />
其中:max可以手动设置,也就是你下载的内容大小,style也是
3.实例源码:
package com.zengtao.classwork; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.widget.ProgressBar; public class MainActivity extends ActionBarActivity { private ProgressBar pb; // 进度条 private int[] randData = new int[100]; // 数组 private int index = 0; // 索引 private int mProgressStaus = 0; // 设置进度条的长度 private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pb = (ProgressBar) findViewById(R.id.pb); // 初始化handle,绑定在主线程中的队列消息中 mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); // 接收消息 if (msg.what == 0x111) { mProgressStaus = index; pb.setProgress(mProgressStaus); } } }; // 创建子线程,在子线程中处理耗时工作 new Thread() { @Override public void run() { super.run(); while (index < 100) { doWork(); Message msg = new Message(); msg.what = 0x111; mHandler.sendMessage(msg); } } }.start(); } /** * 模拟耗时工作(一定要在子线程中做) * * @return 进度条的多少 */ public int doWork() { randData[index++] = (int) (Math.random() * 100); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } return index; } }
4.dowork()方法是模拟的一个耗时操作,当然你自己也可以用其他的代替,比如:网上下载图片,下载好了,之后显示出来等等。
以上是自己的劳动成果,希望能帮到大家。