一聚教程网:一个值得你收藏的教程网站

热门教程

Android如何实现横向进度条演示效果

时间:2022-06-25 23:04:30 编辑:袖梨 来源:一聚教程网

进度条:相信大家也都明白,有了进度条,那么给用户就不会造成,长时间的等待而觉得自己的程序挂掉了,所以,这个小demo还是可一看看的,那么接下来,然我们来看看到底是如何实现的。

1.效果图:

2.布局说明:

1.textview显示进度条
2.ProgressBar进度条
3.进度条配置:

     

其中: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()方法是模拟的一个耗时操作,当然你自己也可以用其他的代替,比如:网上下载图片,下载好了,之后显示出来等等。

热门栏目