首页 > 解决方案 > 活动等待转换然后启动计时器。最小 SDK 16

问题描述

我正在为我的活动转换使用淡入淡出和淡出淡出。当我浏览菜单时,一切运行正常。问题是我有 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>

标签: androidandroid-activitytransitiononcreatechronometer

解决方案


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

推荐阅读