- 其實,實現倒計時功能非常容易,因爲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裏面需要兩個參數第一個是總時間第二個是每次變化的時間數