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

来源:互联网 发布:出售备案域名 编辑:程序博客网 时间:2024/04/29 20:51

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

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 0
原创粉丝点击