Android学习之路--倒计时

2016年2月14日 累吗?累就对了!舒服是留给死人的!

自学android也有差不多一个学期了,为了防止自己把辛辛苦苦所学的android知识丢干净,所以本大专屌丝决定,在这期间每天花点时间来充电,以防大脑饿死!
再说不写点东东怎么能找到成就感。

目的:巩固Timer、TimerTask这两个类,还有Hanler的简单实用。
好吧,先介绍一下Timer、TimerTask这两个类。

Timer、TimerTask均在java.util包下
Timer,顾名思义,计时器,用来计时。
而TimerTask,计时器的任务,也就是对什么事情计时。
我们通常通过Timer创建计时器,用schedule指派任务设置时间

让我们开始学习最简单的倒计时:

一、UI设计

灰常简单:
Android学习之路--倒计时_第1张图片

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.feathers.counttime.MainActivity">
    <TextView  android:id="@+id/text_time" android:layout_width="match_parent" android:layout_height="wrap_content" />
    <EditText  android:id="@+id/edit_time" android:layout_width="match_parent" android:layout_height="wrap_content" />
    <Button  android:id="@+id/bt_start" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击开始倒计时"/>
</LinearLayout>

二、逻辑实现

MainActivity.java

package com.example.feathers.counttime;
import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends Activity {
    private EditText editText;
    private TextView textView;
    private Button button;
    private int time = 0;
    private Timer timer = null;
    private TimerTask task = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();/*初始化UI*/
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /*点击后会自动将设置的时间显示在textView中*/
                textView.setText(editText.getText().toString());
                /*获取用户输入的时间*/
                time = Integer.parseInt(editText.getText().toString());
                /*开始计时*/
                if (time > 0)
                startTimer();
            }
        });
    }
    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0x123) {
                int i = msg.arg1;
                textView.setText(String.valueOf(i));
                /*显示完后 在次启动计时器*/
                if (time > 0)
                startTimer();
            }
        }
    };
    private void startTimer() {
        timer = new Timer();
        task = new TimerTask() {
            @Override
            public void run() {
                time--;
                Message msg = mHandler.obtainMessage();
                msg.what = 0x123;
                msg.arg1 = time;
                mHandler.sendMessage(msg);
            }
        };
        timer.schedule(task,1000);
    }
    public void init() {
        editText = (EditText) findViewById(R.id.edit_time);
        textView = (TextView) findViewById(R.id.text_time);
        button = (Button) findViewById(R.id.bt_start);
    }
}

欢迎指出错误或给出意见!

你可能感兴趣的:(android)