自定義Button之實現點擊按鈕實現倒計時功能

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章