• 好记性不如烂笔杆android学习笔记<六> ProgressBar简单使用


    16,//ProgressBar使用
    xml文件中定义ProgressBar
    //水平进度条

    1 <ProgressBar 
    2 android:id="@+id/firstBar"
    3 style="?android:attr/progressBarStyleHorizontal"
    4 android:layout_width="200dp"
    5 android:layout_height="wrap_content"
    6 android:visibility="gone"<!--默认状态不可见 -->
    7 />

    //默认圆圈形状滚动风格 style="?android:attr/progressBarStyle"

    //Java文件,点击按钮启动滚动条

     1 private int i = 0;
     2 @Override
     3 public void onClick(View v) {
     4     // TODO Auto-generated method stub
     5     if(i == 0){
     6         //设置进度条处于可见的状态
     7         firstBar.setVisibility(View.VISIBLE);
     8         secondBar.setVisibility(View.VISIBLE);
     9     }else if(i < firstBar.getMax()){
    10         //设置主进度条的当前值
    11         firstBar.setProgress(i);
    12         //设置第二进度条的当前值
    13         firstBar.setSecondaryProgress(i + 10);
    14         //因为默认的进度条无法显示进行的状态
    15         //secondBar.setProgress(i);
    16     }
    17     else{
    18         firstBar.setVisibility(View.GONE);
    19         secondBar.setVisibility(View.GONE);
    20     }
    21     //进度条总长度的10%,逐次增加
    22     i = i + 10;
    23 }

    17,//ProgressBar和Handler
    //main.xml文件中

    1 <ProgressBar 
    2 android:id="@+id/handlerBar"
    3 android:layout_width="200dip"
    4 android:layout_height="wrap_content"
    5 style="?android:attr/progressBarStyleHorizontal"
    6 android:visibility="gone"
    7 />

    //Java文件中

    //启动按钮

     1 启动按钮    onClick(View v) {
     2     //调用方法将进度条设置为可见状态
     3     bar.setVisibility(View.VISIBLE);
     4     //将第一个线程添加到线程队列中
     5     updateBarHandler.post(updateThread);
     6     }
     7     //使用匿名内部类来复写Handler当中的handerMessage方法
     8     Handler updateBarHandler = new Handler(){
     9 
    10         @Override
    11         public void handleMessage(Message msg) {
    12             //设置ProgressBar的当前值
    13             bar.setProgress(msg.arg1);
    14             //将线程添加到线程队列中
    15             updateBarHandler.post(updateThread);
    16         }
    17     };
    18     //线程类,该类使用匿名内部类的方式进行声明
    19     Runnable updateThread = new Runnable(){
    20         int i = 0;
    21     @Override
    22     public void run() {
    23         System.out.println("Begin Thread " + i);
    24         i = i + 10 ;
    25         //得到一个消息对象,Message类是由Android操作系统提供
    26         Message msg = updateBarHandler.obtainMessage();
    27         //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员传递消息,优点是系统性能消耗较少
    28         msg.arg1 = i ;
    29         try{
    30             //设置前线程睡眠1000ms
    31             Thread.sleep(1000);
    32         }catch(InterruptedException e){
    33             e.printStackTrace();
    34         }
    35         if(i <= 100){
    36             //将msg对象加入到消息队列当中
    37             updateBarHandler.sendMessage(msg);
    38         }
    39         else{
    40             //如果当i的值为100时,就将线程对象从handler当中移除,Progress停止
    41             updateBarHandler.removeCallbacks(updateThread);
    42         }
    43     }
    44     };

    这一部分可能有点问题,先记录这里

  • 相关阅读:
    python类库31[正则表达式匹配实例]
    Mysql百万级数据迁移实战笔记
    面试官:一千万数据,怎么快速查询?
    为什么MySQL不建议使用NULL作为列默认值?
    Redis各个数据类型最大存储量
    Rabbitmq延迟队列实现定时任务
    PHPstorm批量修改文件换行符CRLF为LF
    使用SeasLog打造高性能日志系统
    协程编程注意事项
    Rabbitmq 安装过程中常见问题(亲测可行)
  • 原文地址:https://www.cnblogs.com/zjqlogs/p/2779237.html
Copyright © 2020-2023  润新知