Активность ждать перехода, затем запустить таймер. мин сдк 16 - PullRequest
0 голосов
/ 03 июля 2019

Я использую fade_in и fade_out для перехода активности. Все работает нормально, когда я перемещаюсь по меню. Проблема в том, что у меня есть 6 кнопок, которые запускают определенную активность, которая включает в себя таймер (хронометр). Это действие запускает таймер метода onCreate (). Так что проблема в том, как запустить мой таймер только после окончания анимации для перехода? Мой таймер работает, пока анимация еще работает. Какие-нибудь способы заставить это работать с min sdk 16?

Я думаю использовать обработчик.

Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
  public void run(){
   // keep resetting the timer 
 }
 }, 1000);

Есть еще идеи?

<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
  <item name="android:activityOpenEnterAnimation">@anim/fade_in</item>
  <item name="android:activityOpenExitAnimation">@anim/fade_out</item>
  <item name="android:activityCloseEnterAnimation">@anim/fade_in</item>
  <item name="android:activityCloseExitAnimation">@anim/fade_out</item>
</style>

1 Ответ

0 голосов
/ 03 июля 2019
    public void startRepeating(final long repeatEachSeconds,final long repeatForSeconds)
    {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

        final Handler mHandler = new Handler();
        final Runnable mRunnable = new Runnable() {
            @Override
            public void run() {
                stopWatch.resetTime();
                mHandler.postDelayed(this,repeatEachSeconds);
            }
        };

        mRunnable.run();

        Handler stopHandler = new Handler();
        stopHandler.postDelayed(new Runnable(){
            @Override
            public void run(){
                mHandler.removeCallbacks(mRunnable);
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
            }
        }, repeatForSeconds);
    }```
...