自定义倒计时button

最近项目中需要用到倒计时,不止一个页面用到所以就写了一个自定义的button只需要在xml中

                  android:id="@+id/messcode_reigster_phone_layout"
                android:layout_width="100dp"
                android:layout_height="40dp" />就可以使用了

package com.newstar.luckybee.ui.customwidget;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.CountDownTimer;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.newstar.luckybee.R;

public class TimeCountButton extends LinearLayout {
 private CountDownTimer countDownTimer;
 private TextView btn;
 private LayoutInflater inflater;

 public TimeCountButton(Context context) {
  super(context);
  initView(context);

 }

 public TimeCountButton(Context context, AttributeSet attrs) {
  super(context, attrs);
  initView(context);
 }

 private void initView(Context context) {
  inflater = LayoutInflater.from(context);
  inflater.inflate(R.layout.button_timecount_layout, this);
  btn = (TextView) findViewById(R.id.messcode_button_timecount_layout);
  this.setOnClickListener(new CountOnClickListener());
  countDownTimer = new CountDownTimer(10000, 1000) {
   // 计时开始要做的事情
   @Override
   public void onTick(long millisUntilFinished) {
    btn.setBackgroundResource(R.drawable.bg_password_retrievepwd_activity_layout);
    btn.setClickable(false);
    btn.setGravity(Gravity.CENTER);
    btn.setText(millisUntilFinished / 1000 + "秒");
   }

   // 计时完毕要做的事情
   @Override
   public void onFinish() {
    btn.setBackgroundResource(R.drawable.bg_category_main_page_8);
    btn.setText("获取验证码");
    btn.setClickable(true);
   }
  };
 }

 @SuppressLint("NewApi")
 public TimeCountButton(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  initView(context);

 }

 class CountOnClickListener implements OnClickListener {
  @Override
  public void onClick(View v) {
    start();
  }
 }

 public void start() {
  countDownTimer.start();
  setClickable(false);
 }
}

如果在使用中遇到这样的问题:点击了按钮可以进行操作,但是并没有显示"倒计时"例如10,9,8这样的话

那么在你所使用的Activity中初始化这个button,然后在button的点击事件中button.start()就可以了

你可能感兴趣的:(自定义倒计时button)