Loading packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +0 −1 Original line number Diff line number Diff line Loading @@ -1472,7 +1472,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return mPrivateLayout.getActiveRemoteInputText(); } public void animateTranslateNotification(final float leftTarget) { if (mTranslateAnim != null) { mTranslateAnim.cancel(); Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java +28 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.statusbar.notification; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.app.ActivityOptions; import android.graphics.Matrix; import android.graphics.Rect; Loading @@ -35,10 +36,11 @@ import android.view.ViewRootImpl; import com.android.systemui.Interpolators; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.NotificationListContainer; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment; import com.android.systemui.statusbar.phone.NotificationPanelView; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarWindowView; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; import java.util.function.Consumer; Loading @@ -57,16 +59,17 @@ public class ActivityLaunchAnimator { private final NotificationPanelView mNotificationPanel; private final NotificationListContainer mNotificationContainer; private final StatusBarWindowView mStatusBarWindow; private final Consumer<Boolean> mPanelCollapser; private final StatusBar mStatusBar; private boolean mAnimationPending; public ActivityLaunchAnimator(StatusBarWindowView statusBarWindow, Consumer<Boolean> panelCollapser, StatusBar statusBar, NotificationPanelView notificationPanel, NotificationListContainer container) { mNotificationPanel = notificationPanel; mNotificationContainer = container; mStatusBarWindow = statusBarWindow; mPanelCollapser = panelCollapser; mStatusBar = statusBar; } public ActivityOptions getLaunchAnimation( Loading @@ -76,6 +79,21 @@ public class ActivityLaunchAnimator { new RemoteAnimationAdapter(animationRunner, 1000 /* Duration */, 0 /* delay */)); } public boolean isAnimationPending() { return mAnimationPending; } public void setLaunchResult(int launchResult) { setAnimationPending((launchResult == ActivityManager.START_TASK_TO_FRONT || launchResult == ActivityManager.START_SUCCESS) && mStatusBar.getBarState() == StatusBarState.SHADE); } private void setAnimationPending(boolean pending) { mAnimationPending = pending; mStatusBarWindow.setExpandAnimationPending(pending); } class AnimationRunner extends IRemoteAnimationRunner.Stub { private final ExpandableNotificationRow mSourceNotification; Loading @@ -94,7 +112,6 @@ public class ActivityLaunchAnimator { IRemoteAnimationFinishedCallback iRemoteAnimationFinishedCallback) throws RemoteException { mSourceNotification.post(() -> { boolean first = true; for (RemoteAnimationTarget app : remoteAnimationTargets) { if (app.mode == RemoteAnimationTarget.MODE_OPENING) { setExpandAnimationRunning(true); Loading Loading @@ -139,7 +156,7 @@ public class ActivityLaunchAnimator { public void onAnimationEnd(Animator animation) { setExpandAnimationRunning(false); if (mInstantCollapsePanel) { mPanelCollapser.accept(false /* animate */); mStatusBar.collapsePanel(false /* animate */); } try { iRemoteAnimationFinishedCallback.onAnimationFinished(); Loading @@ -152,6 +169,7 @@ public class ActivityLaunchAnimator { break; } } setAnimationPending(false); }); } Loading Loading @@ -198,6 +216,10 @@ public class ActivityLaunchAnimator { @Override public void onAnimationCancelled() throws RemoteException { mSourceNotification.post(() -> { setAnimationPending(false); mStatusBar.onLaunchAnimationCancelled(); }); } }; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +1 −1 Original line number Diff line number Diff line Loading @@ -950,7 +950,7 @@ public abstract class PanelView extends FrameLayout { } public boolean isCollapsing() { return mClosing; return mClosing || mLaunchingNotification; } public boolean isTracking() { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +15 −17 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ import android.provider.Settings; import android.service.notification.StatusBarNotification; import android.service.vr.IVrManager; import android.service.vr.IVrStateCallbacks; import android.text.SpannedString; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.EventLog; Loading Loading @@ -589,7 +588,7 @@ public class StatusBar extends SystemUI implements DemoMode, private NavigationBarFragment mNavigationBar; private View mNavigationBarView; private ActivityLaunchAnimator mActivityLaunchAnimator; protected ActivityLaunchAnimator mActivityLaunchAnimator; @Override public void start() { Loading Loading @@ -760,7 +759,7 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel); mStackScroller = mStatusBarWindow.findViewById(R.id.notification_stack_scroller); mActivityLaunchAnimator = new ActivityLaunchAnimator(mStatusBarWindow, this::collapsePanel, this, mNotificationPanel, mStackScroller); mGutsManager.setUpWithPresenter(this, mEntryManager, mStackScroller, mCheckSaveListener, Loading Loading @@ -2054,6 +2053,12 @@ public class StatusBar extends SystemUI implements DemoMode, } } public void onLaunchAnimationCancelled() { if (!isCollapsing()) { onClosingFinished(); } } /** * All changes to the status bar and notifications funnel through here and are batched. */ Loading Loading @@ -3418,7 +3423,7 @@ public class StatusBar extends SystemUI implements DemoMode, } public boolean isCollapsing() { return mNotificationPanel.isCollapsing(); return mNotificationPanel.isCollapsing() || mActivityLaunchAnimator.isAnimationPending(); } public void addPostCollapseAction(Runnable r) { Loading Loading @@ -4959,6 +4964,7 @@ public class StatusBar extends SystemUI implements DemoMode, try { launchResult = intent.sendAndReturnResult(mContext, 0, fillInIntent, null, null, null, getActivityOptions(row)); mActivityLaunchAnimator.setLaunchResult(launchResult); } catch (PendingIntent.CanceledException e) { // the stack trace isn't very helpful here. // Just log the exception message. Loading @@ -4970,7 +4976,7 @@ public class StatusBar extends SystemUI implements DemoMode, mAssistManager.hideAssist(); } } if (shouldCollapse(launchResult)) { if (shouldCollapse()) { if (Looper.getMainLooper().isCurrentThread()) { collapsePanel(); } else { Loading Loading @@ -5003,17 +5009,8 @@ public class StatusBar extends SystemUI implements DemoMode, }, afterKeyguardGone); } private boolean shouldCollapse(int launchResult) { return mState != StatusBarState.SHADE || (launchResult != ActivityManager.START_TASK_TO_FRONT && launchResult != ActivityManager.START_SUCCESS); } public void onExpandAnimationFinished() { if (!isPresenterFullyCollapsed()) { instantCollapseNotificationPanel(); visibilityChanged(false); } private boolean shouldCollapse() { return mState != StatusBarState.SHADE || !mActivityLaunchAnimator.isAnimationPending(); } public void collapsePanel(boolean animate) { Loading Loading @@ -5128,7 +5125,8 @@ public class StatusBar extends SystemUI implements DemoMode, .addNextIntentWithParentStack(intent) .startActivities(getActivityOptions(row), new UserHandle(UserHandle.getUserId(appUid))); if (shouldCollapse(launchResult)) { mActivityLaunchAnimator.setLaunchResult(launchResult); if (shouldCollapse()) { // Putting it back on the main thread, since we're touching views mStatusBarWindow.post(() -> animateCollapsePanels( CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */)); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +6 −1 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ public class StatusBarWindowView extends FrameLayout { private boolean mTouchCancelled; private boolean mTouchActive; private boolean mExpandAnimationRunning; private boolean mExpandAnimationPending; public StatusBarWindowView(Context context, AttributeSet attrs) { super(context, attrs); Loading Loading @@ -268,7 +269,7 @@ public class StatusBarWindowView extends FrameLayout { || ev.getActionMasked() == MotionEvent.ACTION_CANCEL) { setTouchActive(false); } if (mTouchCancelled || mExpandAnimationRunning) { if (mTouchCancelled || mExpandAnimationRunning || mExpandAnimationPending) { return false; } mFalsingManager.onTouchEvent(ev, getWidth(), getHeight()); Loading Loading @@ -393,6 +394,10 @@ public class StatusBarWindowView extends FrameLayout { mExpandAnimationRunning = expandAnimationRunning; } public void setExpandAnimationPending(boolean pending) { mExpandAnimationPending = pending; } public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +0 −1 Original line number Diff line number Diff line Loading @@ -1472,7 +1472,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return mPrivateLayout.getActiveRemoteInputText(); } public void animateTranslateNotification(final float leftTarget) { if (mTranslateAnim != null) { mTranslateAnim.cancel(); Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java +28 −6 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.statusbar.notification; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.app.ActivityOptions; import android.graphics.Matrix; import android.graphics.Rect; Loading @@ -35,10 +36,11 @@ import android.view.ViewRootImpl; import com.android.systemui.Interpolators; import com.android.systemui.statusbar.ExpandableNotificationRow; import com.android.systemui.statusbar.NotificationListContainer; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment; import com.android.systemui.statusbar.phone.NotificationPanelView; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarWindowView; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; import java.util.function.Consumer; Loading @@ -57,16 +59,17 @@ public class ActivityLaunchAnimator { private final NotificationPanelView mNotificationPanel; private final NotificationListContainer mNotificationContainer; private final StatusBarWindowView mStatusBarWindow; private final Consumer<Boolean> mPanelCollapser; private final StatusBar mStatusBar; private boolean mAnimationPending; public ActivityLaunchAnimator(StatusBarWindowView statusBarWindow, Consumer<Boolean> panelCollapser, StatusBar statusBar, NotificationPanelView notificationPanel, NotificationListContainer container) { mNotificationPanel = notificationPanel; mNotificationContainer = container; mStatusBarWindow = statusBarWindow; mPanelCollapser = panelCollapser; mStatusBar = statusBar; } public ActivityOptions getLaunchAnimation( Loading @@ -76,6 +79,21 @@ public class ActivityLaunchAnimator { new RemoteAnimationAdapter(animationRunner, 1000 /* Duration */, 0 /* delay */)); } public boolean isAnimationPending() { return mAnimationPending; } public void setLaunchResult(int launchResult) { setAnimationPending((launchResult == ActivityManager.START_TASK_TO_FRONT || launchResult == ActivityManager.START_SUCCESS) && mStatusBar.getBarState() == StatusBarState.SHADE); } private void setAnimationPending(boolean pending) { mAnimationPending = pending; mStatusBarWindow.setExpandAnimationPending(pending); } class AnimationRunner extends IRemoteAnimationRunner.Stub { private final ExpandableNotificationRow mSourceNotification; Loading @@ -94,7 +112,6 @@ public class ActivityLaunchAnimator { IRemoteAnimationFinishedCallback iRemoteAnimationFinishedCallback) throws RemoteException { mSourceNotification.post(() -> { boolean first = true; for (RemoteAnimationTarget app : remoteAnimationTargets) { if (app.mode == RemoteAnimationTarget.MODE_OPENING) { setExpandAnimationRunning(true); Loading Loading @@ -139,7 +156,7 @@ public class ActivityLaunchAnimator { public void onAnimationEnd(Animator animation) { setExpandAnimationRunning(false); if (mInstantCollapsePanel) { mPanelCollapser.accept(false /* animate */); mStatusBar.collapsePanel(false /* animate */); } try { iRemoteAnimationFinishedCallback.onAnimationFinished(); Loading @@ -152,6 +169,7 @@ public class ActivityLaunchAnimator { break; } } setAnimationPending(false); }); } Loading Loading @@ -198,6 +216,10 @@ public class ActivityLaunchAnimator { @Override public void onAnimationCancelled() throws RemoteException { mSourceNotification.post(() -> { setAnimationPending(false); mStatusBar.onLaunchAnimationCancelled(); }); } }; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +1 −1 Original line number Diff line number Diff line Loading @@ -950,7 +950,7 @@ public abstract class PanelView extends FrameLayout { } public boolean isCollapsing() { return mClosing; return mClosing || mLaunchingNotification; } public boolean isTracking() { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +15 −17 Original line number Diff line number Diff line Loading @@ -100,7 +100,6 @@ import android.provider.Settings; import android.service.notification.StatusBarNotification; import android.service.vr.IVrManager; import android.service.vr.IVrStateCallbacks; import android.text.SpannedString; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.EventLog; Loading Loading @@ -589,7 +588,7 @@ public class StatusBar extends SystemUI implements DemoMode, private NavigationBarFragment mNavigationBar; private View mNavigationBarView; private ActivityLaunchAnimator mActivityLaunchAnimator; protected ActivityLaunchAnimator mActivityLaunchAnimator; @Override public void start() { Loading Loading @@ -760,7 +759,7 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel); mStackScroller = mStatusBarWindow.findViewById(R.id.notification_stack_scroller); mActivityLaunchAnimator = new ActivityLaunchAnimator(mStatusBarWindow, this::collapsePanel, this, mNotificationPanel, mStackScroller); mGutsManager.setUpWithPresenter(this, mEntryManager, mStackScroller, mCheckSaveListener, Loading Loading @@ -2054,6 +2053,12 @@ public class StatusBar extends SystemUI implements DemoMode, } } public void onLaunchAnimationCancelled() { if (!isCollapsing()) { onClosingFinished(); } } /** * All changes to the status bar and notifications funnel through here and are batched. */ Loading Loading @@ -3418,7 +3423,7 @@ public class StatusBar extends SystemUI implements DemoMode, } public boolean isCollapsing() { return mNotificationPanel.isCollapsing(); return mNotificationPanel.isCollapsing() || mActivityLaunchAnimator.isAnimationPending(); } public void addPostCollapseAction(Runnable r) { Loading Loading @@ -4959,6 +4964,7 @@ public class StatusBar extends SystemUI implements DemoMode, try { launchResult = intent.sendAndReturnResult(mContext, 0, fillInIntent, null, null, null, getActivityOptions(row)); mActivityLaunchAnimator.setLaunchResult(launchResult); } catch (PendingIntent.CanceledException e) { // the stack trace isn't very helpful here. // Just log the exception message. Loading @@ -4970,7 +4976,7 @@ public class StatusBar extends SystemUI implements DemoMode, mAssistManager.hideAssist(); } } if (shouldCollapse(launchResult)) { if (shouldCollapse()) { if (Looper.getMainLooper().isCurrentThread()) { collapsePanel(); } else { Loading Loading @@ -5003,17 +5009,8 @@ public class StatusBar extends SystemUI implements DemoMode, }, afterKeyguardGone); } private boolean shouldCollapse(int launchResult) { return mState != StatusBarState.SHADE || (launchResult != ActivityManager.START_TASK_TO_FRONT && launchResult != ActivityManager.START_SUCCESS); } public void onExpandAnimationFinished() { if (!isPresenterFullyCollapsed()) { instantCollapseNotificationPanel(); visibilityChanged(false); } private boolean shouldCollapse() { return mState != StatusBarState.SHADE || !mActivityLaunchAnimator.isAnimationPending(); } public void collapsePanel(boolean animate) { Loading Loading @@ -5128,7 +5125,8 @@ public class StatusBar extends SystemUI implements DemoMode, .addNextIntentWithParentStack(intent) .startActivities(getActivityOptions(row), new UserHandle(UserHandle.getUserId(appUid))); if (shouldCollapse(launchResult)) { mActivityLaunchAnimator.setLaunchResult(launchResult); if (shouldCollapse()) { // Putting it back on the main thread, since we're touching views mStatusBarWindow.post(() -> animateCollapsePanels( CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */)); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +6 −1 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ public class StatusBarWindowView extends FrameLayout { private boolean mTouchCancelled; private boolean mTouchActive; private boolean mExpandAnimationRunning; private boolean mExpandAnimationPending; public StatusBarWindowView(Context context, AttributeSet attrs) { super(context, attrs); Loading Loading @@ -268,7 +269,7 @@ public class StatusBarWindowView extends FrameLayout { || ev.getActionMasked() == MotionEvent.ACTION_CANCEL) { setTouchActive(false); } if (mTouchCancelled || mExpandAnimationRunning) { if (mTouchCancelled || mExpandAnimationRunning || mExpandAnimationPending) { return false; } mFalsingManager.onTouchEvent(ev, getWidth(), getHeight()); Loading Loading @@ -393,6 +394,10 @@ public class StatusBarWindowView extends FrameLayout { mExpandAnimationRunning = expandAnimationRunning; } public void setExpandAnimationPending(boolean pending) { mExpandAnimationPending = pending; } public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; Loading