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


 

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

 

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()方法中執行計時完畢的操作。

 

接下來在需要在執行的類里調用該方法。

這里我封裝了一個類。

 

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();
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM