Android学习第六课 计时器小应用

算一算又有很多天没有写过总结了,最近不知道一直在忙些什么,时间就这样过去了,今天写了一个关于倒计时的小应用,算是把关于线程的东西进行了一个回顾。
首先是一个界面,这个因为只是为了复习知识点,界面就是最丑的白色型界面。这里写图片描述
然后就是倒计时的逻辑

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       //将各大控件进行初始化,并且设计控件的点击动作     
        init();

    }

    public void init() {
        inputtime = (EditText) findViewById(R.id.inputtime);
        gettime = (Button) findViewById(R.id.gettime);
        starttime = (Button) findViewById(R.id.starttime);
        stoptime = (Button) findViewById(R.id.stoptime);
        time = (TextView) findViewById(R.id.time);
        gettime.setOnClickListener(this);
        starttime.setOnClickListener(this);
        stoptime.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.gettime:
           //将输入的数字保存下来,并且将其转换成string类型显示在TextView里面            
            time.setText(inputtime.getText().toString());
           //将输入的字符串转换成int型,传给i         
            i = Integer.parseInt(inputtime.getText().toString());
            break;

        case R.id.starttime:
           //启动倒计时          
            starttime();
            break;

        case R.id.stoptime:
           //停止倒计时          
            stoptime();
            break;
        }
    }

    // 使用handle(消息处理类)机制来传递消息   
    private Handler mhandle = new Handler(){
           //对消息进行处理        
            public void handleMessage(Message msg) {
               //得到时间,将其在textview中显示                
                time.setText(msg.arg1+"");
               //运用了递归的思想,不停的调用自己,实现倒计时的目的
                starttime();
            };

    };

    public void starttime() {
       timer = new Timer();
       task = new TimerTask() {

        @Override
        public void run() {
            // 倒计时时间自减
            i--;
            // 通过message对象获得相应的信息           
            Message message = mhandle.obtainMessage();
            //message自带的参数,用于存放整型的参数            
            message.arg1 = i;
           //发送 消息
            mhandle.sendMessage(message);
        }
    };
           timer.schedule(task, 1000);
    }

    private void stoptime() {
            timer.cancel();
    }

这里面有一个注意的地方就是time.setText(msg.arg1+""); 笔者在这里犯了一个小错误,这句话是为了在textview中显示倒计时的时间,但是setText的参数必须是字符串类型,当时笔者忘记转化,导致程序一直出错。这里提醒一下。最后的效果如下:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值