Only postpone animations if app is visible

Fixes bug where folders would remain open after
returning to launcher

Bug: 8681168

Change-Id: I930616f2aa006c1e23298dbdb0a80a9390ea41af
diff --git a/src/com/android/launcher2/FirstFrameAnimatorHelper.java b/src/com/android/launcher2/FirstFrameAnimatorHelper.java
index 8eac7cd..7180413 100644
--- a/src/com/android/launcher2/FirstFrameAnimatorHelper.java
+++ b/src/com/android/launcher2/FirstFrameAnimatorHelper.java
@@ -43,6 +43,7 @@
 
     private static ViewTreeObserver.OnDrawListener sGlobalDrawListener;
     private static long sGlobalFrameCounter;
+    private static boolean sVisible;
 
     public FirstFrameAnimatorHelper(ValueAnimator animator, View target) {
         mTarget = target;
@@ -61,6 +62,10 @@
         onAnimationUpdate(va);
     }
 
+    public static void setIsVisible(boolean visible) {
+        sVisible = visible;
+    }
+
     public static void initializeDrawListener(View view) {
         if (sGlobalDrawListener != null) {
             view.getViewTreeObserver().removeOnDrawListener(sGlobalDrawListener);
@@ -77,6 +82,7 @@
                 }
             };
         view.getViewTreeObserver().addOnDrawListener(sGlobalDrawListener);
+        sVisible = true;
     }
 
     public void onAnimationUpdate(final ValueAnimator animation) {
@@ -87,6 +93,7 @@
         }
 
         if (!mHandlingOnAnimationUpdate &&
+            sVisible &&
             // If the current play time exceeds the duration, the animation
             // will get finished, even if we call setCurrentPlayTime -- therefore
             // don't adjust the animation in that case
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index b20e3a5..fc42f3f 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -718,6 +718,18 @@
     }
 
     @Override
+    protected void onStop() {
+        super.onStop();
+        FirstFrameAnimatorHelper.setIsVisible(false);
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        FirstFrameAnimatorHelper.setIsVisible(true);
+    }
+
+    @Override
     protected void onResume() {
         super.onResume();