OSDN Git Service

Added a timeout to the launch animation
authorSelim Cinek <cinek@google.com>
Mon, 29 Jan 2018 20:40:32 +0000 (12:40 -0800)
committerSelim Cinek <cinek@google.com>
Mon, 29 Jan 2018 21:46:45 +0000 (13:46 -0800)
After the timeout was hit, we stop blocking touches.

Bug: 69168591
Test: launch notification from service
Change-Id: I6bbb0d603631164cefdbadf0eb9d92af0aaeb84e

packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java

index 907af69..11d20b2 100644 (file)
@@ -56,10 +56,15 @@ public class ActivityLaunchAnimator {
     public static final long ANIMATION_DELAY_ICON_FADE_IN = ANIMATION_DURATION -
             CollapsedStatusBarFragment.FADE_IN_DURATION - CollapsedStatusBarFragment.FADE_IN_DELAY
             - 16;
+    private static final long LAUNCH_TIMEOUT = 500;
     private final NotificationPanelView mNotificationPanel;
     private final NotificationListContainer mNotificationContainer;
     private final StatusBarWindowView mStatusBarWindow;
-    private final StatusBar mStatusBar;
+    private StatusBar mStatusBar;
+    private final Runnable mTimeoutRunnable = () -> {
+        setAnimationPending(false);
+        mStatusBar.collapsePanel(true /* animate */);
+    };
     private boolean mAnimationPending;
 
     public ActivityLaunchAnimator(StatusBarWindowView statusBarWindow,
@@ -92,6 +97,11 @@ public class ActivityLaunchAnimator {
     private void setAnimationPending(boolean pending) {
         mAnimationPending = pending;
         mStatusBarWindow.setExpandAnimationPending(pending);
+        if (pending) {
+            mStatusBarWindow.postDelayed(mTimeoutRunnable, LAUNCH_TIMEOUT);
+        } else {
+            mStatusBarWindow.removeCallbacks(mTimeoutRunnable);
+        }
     }
 
     class AnimationRunner extends IRemoteAnimationRunner.Stub {
index b519824..426268b 100644 (file)
@@ -2656,6 +2656,10 @@ public class StatusBar extends SystemUI implements DemoMode,
         if (mStatusBarView != null) {
             dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions());
         }
+        pw.println("  StatusBarWindowView: ");
+        if (mStatusBarWindow != null) {
+            mStatusBarWindow.dump(fd, pw, args);
+        }
 
         pw.println("  mMediaManager: ");
         if (mMediaManager != null) {
index e32914f..a79a41b 100644 (file)
@@ -62,6 +62,9 @@ import com.android.systemui.statusbar.DragDownHelper;
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
 
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
 
 public class StatusBarWindowView extends FrameLayout {
     public static final String TAG = "StatusBarWindowView";
@@ -398,6 +401,13 @@ public class StatusBarWindowView extends FrameLayout {
         mExpandAnimationPending = pending;
     }
 
+    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        pw.print("  mExpandAnimationPending="); pw.println(mExpandAnimationPending);
+        pw.print("  mExpandAnimationRunning="); pw.println(mExpandAnimationRunning);
+        pw.print("  mTouchCancelled="); pw.println(mTouchCancelled);
+        pw.print("  mTouchActive="); pw.println(mTouchActive);
+    }
+
     public class LayoutParams extends FrameLayout.LayoutParams {
 
         public boolean ignoreRightInset;