Merge "Do not animate status bar icons outside of shade" into qt-dev

This commit is contained in:
Lucas Dupin
2019-06-08 01:54:16 +00:00
committed by Android (Google) Code Review
4 changed files with 23 additions and 2 deletions

View File

@@ -929,7 +929,6 @@ public class NotificationShelf extends ActivatableNotificationView implements
public void setAnimationsEnabled(boolean enabled) { public void setAnimationsEnabled(boolean enabled) {
mAnimationsEnabled = enabled; mAnimationsEnabled = enabled;
mCollapsedIcons.setAnimationsEnabled(enabled);
if (!enabled) { if (!enabled) {
// we need to wait with enabling the animations until the first frame has passed // we need to wait with enabling the animations until the first frame has passed
mShelfIcons.setAnimationsEnabled(false); mShelfIcons.setAnimationsEnabled(false);

View File

@@ -3223,6 +3223,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
private void updateNotificationAnimationStates() { private void updateNotificationAnimationStates() {
boolean running = mAnimationsEnabled || hasPulsingNotifications(); boolean running = mAnimationsEnabled || hasPulsingNotifications();
mShelf.setAnimationsEnabled(running); mShelf.setAnimationsEnabled(running);
mIconAreaController.setAnimationsEnabled(running);
int childCount = getChildCount(); int childCount = getChildCount();
for (int i = 0; i < childCount; i++) { for (int i = 0; i < childCount; i++) {
View child = getChildAt(i); View child = getChildAt(i);

View File

@@ -24,6 +24,7 @@ import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.StatusBarIconView; import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationUtils; import com.android.systemui.statusbar.notification.NotificationUtils;
import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -78,6 +79,7 @@ public class NotificationIconAreaController implements DarkReceiver,
private Context mContext; private Context mContext;
private boolean mFullyDark; private boolean mFullyDark;
private boolean mShowLowPriority = true; private boolean mShowLowPriority = true;
private boolean mAnimationsEnabled;
/** /**
* Ratio representing being awake or in ambient mode, where 1 is dark and 0 awake. * Ratio representing being awake or in ambient mode, where 1 is dark and 0 awake.
@@ -283,6 +285,25 @@ public class NotificationIconAreaController implements DarkReceiver,
false /* hide centered icon */); false /* hide centered icon */);
} }
/**
* If icons of the status bar should animate when they are added or removed.
*/
public void setAnimationsEnabled(boolean enabled) {
mAnimationsEnabled = enabled;
updateAnimations();
}
@Override
public void onStateChanged(int newState) {
updateAnimations();
}
private void updateAnimations() {
boolean inShade = mStatusBarStateController.getState() == StatusBarState.SHADE;
mCenteredIcon.setAnimationsEnabled(mAnimationsEnabled && inShade);
mNotificationIcons.setAnimationsEnabled(mAnimationsEnabled && inShade);
}
@VisibleForTesting @VisibleForTesting
boolean shouldShouldLowPriorityIcons() { boolean shouldShouldLowPriorityIcons() {
return mShowLowPriority; return mShowLowPriority;

View File

@@ -315,7 +315,7 @@ public class NotificationIconContainer extends AlphaOptimizedFrameLayout {
@Override @Override
public void onViewRemoved(View child) { public void onViewRemoved(View child) {
super.onViewRemoved(child); super.onViewRemoved(child);
if (child instanceof StatusBarIconView) { if (mAnimationsEnabled && child instanceof StatusBarIconView) {
boolean isReplacingIcon = isReplacingIcon(child); boolean isReplacingIcon = isReplacingIcon(child);
final StatusBarIconView icon = (StatusBarIconView) child; final StatusBarIconView icon = (StatusBarIconView) child;
if (icon.getVisibleState() != StatusBarIconView.STATE_HIDDEN if (icon.getVisibleState() != StatusBarIconView.STATE_HIDDEN