空消息的使用

private Handler handler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            //得到当前显示的数值
            int number = Integer.parseInt(tv_demo_number.getText().toString());
            switch (msg.what) {
            case WHAT_INCREASE:
                //限制number<=20
                if(number==20) {
                    //设置暂停不能操作
                    btn_demo_pause.setEnabled(false);
                    Toast.makeText(HandlerDemoActivity.this, "已经达到最大值", 0).show();
                    return;
                }

                number++;
                tv_demo_number.setText(number+"");
                //发送增加的延迟消息
                handler.sendEmptyMessageDelayed(WHAT_INCREASE, 1000);
                break;
            case WHAT_DECREASE:
                //限制number>=1
                if(number==1) {
                    //设置暂停不能操作
                    btn_demo_pause.setEnabled(false);
                    Toast.makeText(HandlerDemoActivity.this, "已经达到最小值", 0).show();
                    return;
                }
                number--;
                tv_demo_number.setText(number+"");
                //发送减少的延迟消息
                handler.sendEmptyMessageDelayed(WHAT_DECREASE, 1000);
                break;
            default:
                break;
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_handler_demo);
        init();
    }

    private void init() {
        tv_demo_number = (TextView) findViewById(R.id.tv_demo_number);
        btn_demo_increase = (Button) findViewById(R.id.btn_demo_increase);
        btn_demo_decrease = (Button) findViewById(R.id.btn_demo_decrease);
        btn_demo_pause = (Button) findViewById(R.id.btn_demo_pause);

        btn_demo_increase.setOnClickListener(this);
        btn_demo_decrease.setOnClickListener(this);
        btn_demo_pause.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v==btn_demo_increase) {//自动增加  what =1
            //限制Button可操作性
            btn_demo_increase.setEnabled(false);
            btn_demo_decrease.setEnabled(true);
            btn_demo_pause.setEnabled(true);

            //停止减少(移除未处理的减少的消息)
            handler.removeMessages(WHAT_DECREASE);
            //发消息(增加)
            handler.sendEmptyMessage(WHAT_INCREASE);
        } else if(v==btn_demo_decrease) {//自动减少 what=2
            //限制Button可操作性
            btn_demo_increase.setEnabled(true);
            btn_demo_decrease.setEnabled(false);
            btn_demo_pause.setEnabled(true);

            //停止增加(移除未处理的增加的消息)
            handler.removeMessages(WHAT_INCREASE);

            //发消息(减少)
            handler.sendEmptyMessage(WHAT_DECREASE);
        } else if(v==btn_demo_pause) {//暂停

            //限制Button可操作性
            btn_demo_increase.setEnabled(true);
            btn_demo_decrease.setEnabled(true);
            btn_demo_pause.setEnabled(false);

            //停止增加/减少(移除未处理的减少/增加的消息)
            handler.removeMessages(WHAT_INCREASE);
            handler.removeMessages(WHAT_DECREASE);
        }
    }

最新文章

  1. JavaScript 对象属性介绍
  2. [Android 开源项目学习]Android的UITableView(1)
  3. mssql触发器demo
  4. C#正则表达式之字符替换
  5. TimeSpan XML序列化
  6. 居然还有WM_TIMECHANGE(只在用户手动改变系统时间时才会产生作用)
  7. STM32W芯片的JTAG口用于GPIO
  8. 开涛spring3(2.2) - IoC 容器基本原理及其helloword
  9. 大前端的自动化工厂(2)—— SB Family
  10. 关于memset的错误使用
  11. react项目和next项目修改默认端口号
  12. python函数作用域,嵌套函数,闭包
  13. Shell中的case命令
  14. BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(昨天某个群友表示写的简单了点,然后我无情的把他的抄了一遍)
  15. Linux学习笔记04—IP配置
  16. 树莓派通过GPIO控制步进电机
  17. hive一行变多行及多行变一行
  18. IntelliJ IDEA导出Java 可执行Jar包
  19. webpack打包多html开发案例新
  20. Mybatis 拦截器报错org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)

热门文章

  1. asp传递参数的几种方式
  2. tableView刷新中的问题
  3. BZOJ——2134: 单选错位
  4. chrome mac 快捷键
  5. iOS -- 原生NSStream实现socket
  6. 无插件,跨平台,基于WebGL的三维地球来了!!!
  7. elasticsearch 最佳实践
  8. 【翻译自mos文章】使用asmcmd命令在本地和远程 asm 实例之间 拷贝asm file的方法
  9. PS 如何制作柔和的边框
  10. ajax加载时的进度条