极客学院Android12案例---案例1--倒计时

1.倒计时

1、使用了timer计时器,并使用timer.schedule方法创建一个具体的定时任务,需要传入timeTask对象
2、使用TimerTask创建一个timeTask,这个对象用于承载一个具体的线程(子线程)
3、使用handler来接受Message的消息对象
4、在timerTask对象中开启线程,想Message对象的arg来传递消息,并用handler的sendMessage方法来发送Message对象

package com.fengray.ex038ximalaya;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 AppCompatActivity implements View.OnClickListener {
    private EditText inputTime;
    private TextView showinfo;
    private Button getTime,starttime,endTime;
    private int i=0;
    private Timer timer;
    private TimerTask timetask;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化数据
        initdatas();


    }

    public void initdatas(){
        inputTime=findViewById(R.id.inputTime);
        showinfo=findViewById(R.id.showTime);
        starttime=findViewById(R.id.startTime);
        endTime=findViewById(R.id.endTime);
        getTime=findViewById(R.id.getTime);

        getTime.setOnClickListener(this);
        starttime.setOnClickListener(this);
        endTime.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.getTime:
                showinfo.setText(inputTime.getText().toString());
                i=Integer.parseInt(inputTime.getText().toString());
                break;
            case R.id.startTime:
                startTime();
                break;
            case R.id.endTime:
                endTime();
                break;
            default:
                break;
        }

    }
    //handle用于在线程间传值
    private Handler mHandler=new Handler(){
        public void handleMessage(Message message){
            showinfo.setText(message.arg1+"");//需要将messsage的arg1对象转化为字符串
            startTime();//再次启动,向handler发送信息
        }
    };
    //开始时间
    public void startTime(){
        timer=new Timer();
        //创建一个timeTask任务
        timetask=new TimerTask() {
            @Override
            public void run() {
              i--;
                Message message=mHandler.obtainMessage();//获取一个message空对象
                message.arg1=i;//给message对象的arg1赋值
                mHandler.sendMessage(message);//将这个message发送给handler对象
            }
        };
        timer.schedule(timetask, 1000);
    }
    //停止时间
    public void endTime(){
        timer.cancel();//清楚计时器
    }
}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值