最近项目中需要用到倒计时,不止一个页面用到所以就写了一个自定义的button只需要在xml中
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()就可以了