zoukankan      html  css  js  c++  java
  • android handler 基本使用 2


               示例2 Handler操作进度条

               

                  在Android布局文件中添加ProgressBar Button,并设置属性、参数

                  

                   创建Handler对象,以匿名内部类的方式,重写Handler对象的handlerMessage(Message msg)方法

                                    

                   

    Handler handler = new Handler() {

            @Override
            public void handleMessage(Message msg) {
                // TODO Auto-generated method stub
                
    //
                int t = msg.arg1;
                progressBar.setProgress(t);
                handler.post(proThread);

                // 标记2 详见后面解释
                if (t == 100) {
                    handler.removeCallbacks(proThread);
                }
                super.handleMessage(msg);
            }
        };

                   Button 的监听器
    handlerButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    progressBar.setVisibility(View.VISIBLE);

                    //将要执行的线程对象放入到队列当中 

                    handler.post(proThread); //proThread 匿名内部类方式创建的Runnable对象
                }
            }); 

     

                   创建Runnable对象

                     

    // 进度条线程 使用匿名内部类
        Runnable proThread = new Runnable() {
            int i = 0;//进度条的值

            @Override
            public void run() {
                // TODO Auto-generated method stub

                i = i + 10;
                System.out.println("ProBar Thread_" + i);
                // 得到消息对象
                Message msgMessage = handler.obtainMessage();
                msgMessage.arg1 = i; //设置成员变量arg1
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
                handler.sendMessage(msgMessage);

                // 无法删除 不清楚原因,在 标记2 处删除
                if (i == 100) {
                    handler.removeCallbacks(proThread);
                }
            }
        };

                   

               

  • 相关阅读:
    bootstrap组件+模板地址
    10个自动化测试框架,测试工程师用起来
    IP地址分类(A类 B类 C类 D类 E类)
    来不及解释!Linux常用命令大全,先收藏再说
    凭借祖传配方年入21亿(王守义十三香),一生坚持不上市,亏待自己也要善待员工
    不同手指戴戒指的含义
    Soul App 是一款怎样的产品? SOUL APP 机缘巧合我开始使用 今天第四天内心想知道大家对它的感受 又其实并没有那么想大家把感受具象化再描述出来 嗯 还是希望大家能说一说(网恋需谨慎,小心骗子)
    解放双手,markdown文章神器,Typora+PicGo+七牛云图床实现自动上传图片
    度学习与自然语言处理
    软件测试面试之剖析面试官
  • 原文地址:https://www.cnblogs.com/lpe110/p/2442527.html
Copyright © 2011-2022 走看看