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);
                }
            }
        };

                   

               

  • 相关阅读:
    提醒你一下, 你真的很垃圾, 创建一个maven 的web 项目都忘记了
    java web 项目中基础技术
    java 构造函数
    分布式简介
    RabbitMq 深入了解
    JS正则表达式验证数字非常全
    mui返回上个页面并刷新数据
    Windows环境下IOS APP打包上传AppStore详细流程
    crontab 详细用法 定时任务
    Linux epoll 源码注释
  • 原文地址:https://www.cnblogs.com/lpe110/p/2442527.html
Copyright © 2011-2022 走看看