弱弱的进度条

来源:互联网 发布:网络空间安全大学排名 编辑:程序博客网 时间:2024/04/28 12:04

真的很弱。。。

 

首先就是画界面的甘蕉。。。

一个弱弱的进度条和一个弱弱的start按钮,进度条最初设置为不可见

<ProgressBar
 android:id="@+id/bar"
 style="?android:attr/progressBarStyleHorizontal"
 android:layout_width="200dp"
 android:layout_height="wrap_content"
 android:visibility="gone"
/>

 

activity里,依旧是

1.声明控件变量,一个进度条,一个按钮

2.根据控件得到代表控件的对象

3.为按钮设置监听器

按钮监听的ButtonListener方法

4.继承OnClickListener类,复写onClick方法

  4.1把进度条设置为可见

     bar.setVisibility(View.VISIBLE);

  4.2把线程加入线程队列,立即加入

    updateBarHandler.post(updateThread);

    延迟放入的方法是updateBarHandler.postDelayed(updateThread,3000);

5.线程类,该类使用匿名内部类方式进行声明

两种使用线程的方法

  

 继承Thread类 需要先start方法,然后run方法 实现Runnable接口 实现run方法

Runnable updateThread = new Runnable(){
    int i = 0;
    //复写run方法
  @Override
  public void run() {
   // TODO Auto-generated methodstub
   System.out.println("BeginThread" + i);
   i+=10;
   //得到一个消息对象,Message类是由Android操作系统提供的
   Messagemsg = updateBarHandler.obtainMessage();
   
   //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员变量传递消息,优点是系统性能消耗小
   msg.arg1 =i;
   Bundle bundle= new Bundle();
   bundle.putString("testme","test bundle");
   msg.setData(bundle);
   try{
    //设置当前显示睡眠1秒
    Thread.sleep(1000);
   }
   catch(InterruptedExceptione){
    e.printStackTrace();
   }
      if(i> 100){
    //如果当i的值大于100时,就将线程对象从handler当中移除
    updateBarHandler.removeCallbacks(updateThread);
   }
   else{

   //将msg对象加入到消息队列中
    updateBarHandler.sendMessage(msg);
   }
  }

6.Handler类,使用匿名内部类来复写Handler当中的handleMessage方法

Handler updateBarHandler = new Handler(){

  @Override
  public voidhandleMessage(Message msg) {

   //改变进度条显示的进度
   bar.setProgress(msg.arg1);

   //获取bundle中的数据
   Bundle bundle= msg.getData();

   //把进程放入进程队列
   updateBarHandler.post(updateThread);
   System.out.println("test---->"+ bundle.getString("testme"));
  }
    
    };

 

一些要说的:

1.实现线程有两种方法,上面表里有。其中继承Thread类的话,线程和Activity会在不同的线程中。而实现Runnable接口的话,线程和Activity会在同一个线程中。

2.Handler消息传递机制,是个异步的东西。

  updateThread用来实现Runnable方法,即产生一个线程

 在updateThread的run方法中,有updateBarHandler.sendMessage(msg);它只负责传递消息,将消息放入消息队列后就结束了。就像去邮局邮信,不会等待信送到。

  updateBarHandler作为Handler的一个子类,继承Handler。

 在其中使用内部类复写了handleMessage方法,这个方法用来处理消息。就像收信。

 

综上,来叙述下执行过程:

点击按钮后,调用监听器的onClick方法,把线程加入线程队列,开始执行,跳到线程部分,执行run方法(执行线程总是执行它的run方法),run方法中sendMessage。而后,Handler部分的handleMessage处理消息,处理过程中,有一步把线程加入线程队列。于是,又跳到线程部分执行run方法,直到run方法中的判断条件不符合,将线程从handler中移除。

 

弱弱的进度条



代码备份

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 单位领导是宵小之人我该怎么办 一件事想不明白非得想明白怎么办 在四楼上课时发生地震该怎么办 媳妇要离婚我想要孩子该怎么办 媳妇带了避孕环我想要孩子怎么办 新开的文具店一点生意都没有怎么办 孩子在学校被坏孩子欺负了该怎么办 老师像个傻叉我妈还喷我我怎么办啊 承台上预埋桥墩连接钢筋错了怎么办 冲床油缸螺栓拆不下来怎么办 汇款到账银行写错了怎么办 搜狗输入法数字序号超过20怎么办 苹果手机保存的图片变模糊怎么办 微信视频保存到手机变模糊怎么办 自己的位置被别人取代了怎么办 给工厂做半成品老板跑了怎么办 微信变成英文再恢复汉字怎么办 cad中标注尺寸数字太小怎么办 扣扣的钱包手势密码忘记了怎么办 台式电脑带符号的数字打不出怎么办 情侣之间出现看见对方就烦怎么办 电信卡号和联通卡号怎么办情侣号 电脑能登qq但打不开网页怎么办 想跟朋友聊天但对方不理怎么办 刚进婆家门被婆婆欺负怎么办 支付宝的聊天记录被删了怎么办 彩票站买彩票把钱付了没出票怎么办 与异性朋友聊天没话题了怎么办 快递写错地址但已经发货了怎么办 快递写错电话但已经发货了怎么办 微信添加好友功能被限制怎么办 qq号被冻结了限制解封怎么办 被别人强制拉入qq群怎么办 qq群里的图片过期了怎么办 q附近人不能关注不能发信息怎么办 qq畅聊之火掉了怎么办 打印机打印时上面空白留太多怎么办 发短信一直空格里面写0怎么办 网贷获取我新手机号通讯录怎么办 系统音频驱动异常或未安装怎么办 附近功能已屏蔽你的qq好友怎么办