- 其实,实现倒计时功能非常容易,因为Android已经将该功能封装好了我们只要使用就可以了因为简单我这里也不多说直接上代码,
在自定义VIew中我继承Button
public class CountDownTimerButton extends Button {
// 总倒计时时间
private static final long millisInFuture = 60 * 1000;
// 每次减去1秒
private static final long countDownInterval = 1000;
public CountDownTimerButton(Context context) {
this(context, null);
}
public CountDownTimerButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CountDownTimerButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void startTiming(){
// 设置按钮为不可点击,并修改显示背景
setEnabled(false);
setBackgroundResource(R.drawable.mine_button_shape);
// 开始倒计时
new CountDownTimer( millisInFuture, countDownInterval){
@Override
public void onTick(long millisUntilFinished) {
setText(millisUntilFinished/countDownInterval+"秒");
}
@Override
public void onFinish() {
// 重置文字,并恢复按钮为可点击
setText("重新发送");
setEnabled(true);
setBackgroundResource(R.drawable.button_bg_selected);
}
}.start();
}
}
代码非常简单里面都有注释
下面是布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
>
<com.example.as.myview.CountDownTimerButton
android:id="@+id/myView"
android:layout_width="68dp"
android:layout_height="33dp"
android:background="#FFA21212"
android:gravity="center"
android:text="点击获取"
android:textColor="#fff"
android:textSize="10sp" />
</RelativeLayout>
Activity中使用方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final CountDownTimerButton myView = (CountDownTimerButton) findViewById(R.id.myView);
myView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myView.startTiming();
}
});
}
}
是不是非常简单它主要使用了Android内部的一个类CountDownTimer里面需要两个参数第一个是总时间第二个是每次变化的时间数