diff --git a/packages/SystemUI/src/com/android/systemui/SystemBars.java b/packages/SystemUI/src/com/android/systemui/SystemBars.java index 6623cabe4bd7a..b5093b3ce52ae 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemBars.java +++ b/packages/SystemUI/src/com/android/systemui/SystemBars.java @@ -42,13 +42,6 @@ public class SystemBars extends SystemUI { createStatusBarFromConfig(); } - @Override - protected void onConfigurationChanged(Configuration newConfig) { - if (mStatusBar != null) { - mStatusBar.onConfigurationChanged(newConfig); - } - } - @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (mStatusBar != null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index 36ed551ec4bcd..8da17fa76bd7e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -41,7 +41,8 @@ import com.android.systemui.statusbar.stack.ViewState; * A notification shelf view that is placed inside the notification scroller. It manages the * overflow icons that don't fit into the regular list anymore. */ -public class NotificationShelf extends ActivatableNotificationView { +public class NotificationShelf extends ActivatableNotificationView implements + View.OnLayoutChangeListener { public static final boolean SHOW_AMBIENT_ICONS = true; private static final boolean USE_ANIMATIONS_WHEN_OPENING = @@ -494,6 +495,10 @@ public class NotificationShelf extends ActivatableNotificationView { @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); + updateRelativeOffset(); + } + + private void updateRelativeOffset() { mCollapsedIcons.getLocationOnScreen(mTmp); mRelativeOffset = mTmp[0]; getLocationOnScreen(mTmp); @@ -560,6 +565,7 @@ public class NotificationShelf extends ActivatableNotificationView { public void setCollapsedIcons(NotificationIconContainer collapsedIcons) { mCollapsedIcons = collapsedIcons; + mCollapsedIcons.addOnLayoutChangeListener(this); } public void setStatusBarState(int statusBarState) { @@ -595,6 +601,12 @@ public class NotificationShelf extends ActivatableNotificationView { } } + @Override + public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, + int oldTop, int oldRight, int oldBottom) { + updateRelativeOffset(); + } + private class ShelfState extends ExpandableViewState { private float openedAmount; private boolean hasItemsInStableShelf; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index aec9a4b421aea..1101701942943 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -612,8 +612,10 @@ public class StatusBarIconView extends AnimatedImageView { } public void setIconAppearAmount(float iconAppearAmount) { - mIconAppearAmount = iconAppearAmount; - invalidate(); + if (mIconAppearAmount != iconAppearAmount) { + mIconAppearAmount = iconAppearAmount; + invalidate(); + } } public float getIconAppearAmount() { @@ -625,8 +627,10 @@ public class StatusBarIconView extends AnimatedImageView { } public void setDotAppearAmount(float dotAppearAmount) { - mDotAppearAmount = dotAppearAmount; - invalidate(); + if (mDotAppearAmount != dotAppearAmount) { + mDotAppearAmount = dotAppearAmount; + invalidate(); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java index 707997d5be453..45812042412cc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java @@ -79,7 +79,9 @@ public class NotificationIconAreaController implements DarkReceiver { for (int i = 0; i < mNotificationIcons.getChildCount(); i++) { View child = mNotificationIcons.getChildAt(i); child.setLayoutParams(params); - child = mShelfIcons.getChildAt(i); + } + for (int i = 0; i < mShelfIcons.getChildCount(); i++) { + View child = mShelfIcons.getChildAt(i); child.setLayoutParams(params); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index ca46c6e26e0ee..987221955db3d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -172,7 +172,6 @@ import com.android.systemui.statusbar.ScrimView; import com.android.systemui.statusbar.SignalClusterView; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.InflationException; -import com.android.systemui.statusbar.notification.NotificationInflater; import com.android.systemui.statusbar.notification.VisualStabilityManager; import com.android.systemui.statusbar.phone.StatusBarIconController.IconManager; import com.android.systemui.statusbar.phone.UnlockMethodCache.OnUnlockMethodChangedListener; @@ -717,7 +716,7 @@ public class StatusBar extends SystemUI implements DemoMode, private LogMaker mStatusBarStateLog; private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger(); private NotificationIconAreaController mNotificationIconAreaController; - private ConfigurationListener mDensityChangeListener; + private ConfigurationListener mConfigurationListener; private InflationExceptionHandler mInflationExceptionHandler = this::handleInflationException; private void recycleAllVisibilityObjects(ArraySet array) { @@ -945,13 +944,18 @@ public class StatusBar extends SystemUI implements DemoMode, Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(this); - mDensityChangeListener = new ConfigurationListener() { + mConfigurationListener = new ConfigurationListener() { + @Override + public void onConfigChanged(Configuration newConfig) { + StatusBar.this.onConfigurationChanged(newConfig); + } + @Override public void onDensityOrFontScaleChanged() { StatusBar.this.onDensityOrFontScaleChanged(); } }; - Dependency.get(ConfigurationController.class).addCallback(mDensityChangeListener); + Dependency.get(ConfigurationController.class).addCallback(mConfigurationListener); } protected void createIconController() { @@ -3910,7 +3914,7 @@ public class StatusBar extends SystemUI implements DemoMode, } Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(null); mDeviceProvisionedController.removeCallback(mUserSetupObserver); - Dependency.get(ConfigurationController.class).removeCallback(mDensityChangeListener); + Dependency.get(ConfigurationController.class).removeCallback(mConfigurationListener); } private boolean mDemoModeAllowed;