Android關於界面必定時間無操做自動跳轉到指定界面的實現

 

主要用到的功能,自定義一個定時器CountTimer繼承CountDownTimer。ide

 

public class CountTimer extends CountDownTimer {
    private Context context;

    /**  * 參數 millisInFuture 倒計時總時間(如60S,120s等)  * 參數 countDownInterval 漸變時間(每次倒計1s)  */ public CountTimer(long millisInFuture, long countDownInterval,Context context) {
        super(millisInFuture, countDownInterval);
        this.context=context;
    }
    // 計時完畢時觸發
    @Override
    public void onFinish() {
        UIHelper.showMainActivity((Activity) context);

    }
    // 計時過程顯示
    @Override
    public void onTick(long millisUntilFinished) {
    }
}

方法很簡單,只須要在onFinish()方法中執行計時完畢的操做。oop

 

接下來在須要在執行的類裏調用該方法。post

這裏我封裝了一個類。this

 

public class BaseDispatchTouchActivity extends AppCompatActivity{
    private CountTimer countTimerView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }
    private void timeStart(){
        new Handler(getMainLooper()).post(new Runnable() {
            @Override
            public void run() {
                countTimerView.start();
            }
        });
    }
    private void init() {
        //初始化CountTimer,設置倒計時爲2分鐘。
        countTimerView=new CountTimer(120000,1000,BaseDispatchTouchActivity.this);
    }

    /**  * 主要的方法,重寫dispatchTouchEvent  * @param ev * @return */ @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        switch (ev.getAction()){
            //獲取觸摸動做,若是ACTION_UP,計時開始。
            case MotionEvent.ACTION_UP:
                countTimerView.start();
                break;
            //不然其餘動做計時取消
            default:countTimerView.cancel();
                break;
        }
        return super.dispatchTouchEvent(ev);
    }
    @Override
    protected void onPause() {
        super.onPause();
        countTimerView.cancel();
    }
    @Override
    protected void onResume() {

        super.onResume();
        timeStart();
    }
}
相關文章
相關標籤/搜索