summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Selim Cinek <cinek@google.com> 2016-04-11 09:35:54 +0800
committer Selim Cinek <cinek@google.com> 2016-04-18 15:10:37 -0700
commit3e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9 (patch)
treedfe3f6d11b26c812c7218047569a5544a7732341
parente803491cb0f4a3d3cb842771757fcf26bed080a0 (diff)
Fixed a few issues when adapting the dpi
The statusbar is now behaving nicer and other parts are behaving similar as if they had been inflated that way. The signalclusterview is now properly recreated ensuring that it's scaled correclty. Fixes: 26844819 Change-Id: Id1aab629204d03c079815358e7a5eb12d2a4e557
-rw-r--r--packages/SystemUI/res/layout/signal_cluster_view.xml1
-rw-r--r--packages/SystemUI/res/layout/system_icons.xml1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java46
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java30
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java73
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java65
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java7
13 files changed, 203 insertions, 63 deletions
diff --git a/packages/SystemUI/res/layout/signal_cluster_view.xml b/packages/SystemUI/res/layout/signal_cluster_view.xml
index 9df5dbf74609..d17601c1c054 100644
--- a/packages/SystemUI/res/layout/signal_cluster_view.xml
+++ b/packages/SystemUI/res/layout/signal_cluster_view.xml
@@ -19,6 +19,7 @@
<!-- extends LinearLayout -->
<com.android.systemui.statusbar.SignalClusterView
xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/signal_cluster"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center_vertical"
diff --git a/packages/SystemUI/res/layout/system_icons.xml b/packages/SystemUI/res/layout/system_icons.xml
index e9448dbd7163..3a339920618d 100644
--- a/packages/SystemUI/res/layout/system_icons.xml
+++ b/packages/SystemUI/res/layout/system_icons.xml
@@ -27,7 +27,6 @@
android:orientation="horizontal"/>
<include layout="@layout/signal_cluster_view"
- android:id="@+id/signal_cluster"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/signal_cluster_margin_start"/>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 7c6c641cb7c9..cb1128bfca49 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -910,7 +910,7 @@ public abstract class BaseStatusBar extends SystemUI implements
final float fontScale = newConfig.fontScale;
final int density = newConfig.densityDpi;
if (density != mDensity || mFontScale != fontScale) {
- reInflateViews();
+ onDensityOrFontScaleChanged();
mDensity = density;
mFontScale = fontScale;
}
@@ -926,7 +926,7 @@ public abstract class BaseStatusBar extends SystemUI implements
}
}
- protected void reInflateViews() {
+ protected void onDensityOrFontScaleChanged() {
ArrayList<Entry> activeNotifications = mNotificationData.getActiveNotifications();
for (int i = 0; i < activeNotifications.size(); i++) {
Entry entry = activeNotifications.get(i);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
index e4accf58a3c9..870447acf6e8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar;
import android.app.Notification;
import android.content.Context;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
@@ -39,6 +40,7 @@ import java.text.NumberFormat;
public class StatusBarIconView extends AnimatedImageView {
private static final String TAG = "StatusBarIconView";
+ private boolean mAlwaysScaleIcon;
private StatusBarIcon mIcon;
@ViewDebug.ExportedProperty private String mSlot;
@@ -49,6 +51,7 @@ public class StatusBarIconView extends AnimatedImageView {
private String mNumberText;
private Notification mNotification;
private final boolean mBlocked;
+ private int mDensity;
public StatusBarIconView(Context context, String slot, Notification notification) {
this(context, slot, notification, false);
@@ -57,7 +60,6 @@ public class StatusBarIconView extends AnimatedImageView {
public StatusBarIconView(Context context, String slot, Notification notification,
boolean blocked) {
super(context);
- final Resources res = context.getResources();
mBlocked = blocked;
mSlot = slot;
mNumberPain = new Paint();
@@ -65,18 +67,37 @@ public class StatusBarIconView extends AnimatedImageView {
mNumberPain.setColor(context.getColor(R.drawable.notification_number_text_color));
mNumberPain.setAntiAlias(true);
setNotification(notification);
+ maybeUpdateIconScale();
+ setScaleType(ScaleType.CENTER);
+ mDensity = context.getResources().getDisplayMetrics().densityDpi;
+ }
+ private void maybeUpdateIconScale() {
// We do not resize and scale system icons (on the right), only notification icons (on the
// left).
- if (notification != null) {
- final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
- final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
- final float scale = (float)imageBounds / (float)outerBounds;
- setScaleX(scale);
- setScaleY(scale);
+ if (mNotification != null || mAlwaysScaleIcon) {
+ updateIconScale();
}
+ }
- setScaleType(ScaleType.CENTER);
+ private void updateIconScale() {
+ Resources res = mContext.getResources();
+ final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
+ final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
+ final float scale = (float)imageBounds / (float)outerBounds;
+ setScaleX(scale);
+ setScaleY(scale);
+ }
+
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ int density = newConfig.densityDpi;
+ if (density != mDensity) {
+ mDensity = density;
+ maybeUpdateIconScale();
+ updateDrawable();
+ }
}
public void setNotification(Notification notification) {
@@ -87,12 +108,9 @@ public class StatusBarIconView extends AnimatedImageView {
public StatusBarIconView(Context context, AttributeSet attrs) {
super(context, attrs);
mBlocked = false;
- final Resources res = context.getResources();
- final int outerBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
- final int imageBounds = res.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size);
- final float scale = (float)imageBounds / (float)outerBounds;
- setScaleX(scale);
- setScaleY(scale);
+ mAlwaysScaleIcon = true;
+ updateIconScale();
+ mDensity = context.getResources().getDisplayMetrics().densityDpi;
}
private static boolean streq(String a, String b) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java
index 225751a627b2..f86badb2970b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/IconMerger.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.phone;
import android.content.Context;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.view.View;
@@ -28,21 +29,29 @@ public class IconMerger extends LinearLayout {
private static final String TAG = "IconMerger";
private static final boolean DEBUG = false;
- private final int mIconSize;
- private final int mIconHPadding;
+ private int mIconSize;
+ private int mIconHPadding;
private View mMoreView;
public IconMerger(Context context, AttributeSet attrs) {
super(context, attrs);
+ reloadDimens();
+ if (DEBUG) {
+ setBackgroundColor(0x800099FF);
+ }
+ }
- Resources res = context.getResources();
+ private void reloadDimens() {
+ Resources res = mContext.getResources();
mIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding);
+ }
- if (DEBUG) {
- setBackgroundColor(0x800099FF);
- }
+ @Override
+ protected void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ reloadDimens();
}
public void setOverflowIndicator(View v) {
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 c4917a1c80fc..cbaab14652fe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java
@@ -5,6 +5,7 @@ import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Rect;
+import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
@@ -17,7 +18,6 @@ import com.android.systemui.statusbar.StatusBarIconView;
import com.android.systemui.statusbar.notification.NotificationUtils;
import java.util.ArrayList;
-import java.util.List;
/**
* A controller for the space in the status bar to the left of the system icons. This area is
@@ -51,9 +51,7 @@ public class NotificationIconAreaController {
* Initializes the views that will represent the notification area.
*/
protected void initializeNotificationAreaViews(Context context) {
- Resources res = context.getResources();
- mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);
- mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding);
+ reloadDimens(context);
LayoutInflater layoutInflater = LayoutInflater.from(context);
mNotificationIconArea = inflateIconArea(layoutInflater);
@@ -68,6 +66,27 @@ public class NotificationIconAreaController {
}
}
+ public void onDensityOrFontScaleChanged(Context context) {
+ reloadDimens(context);
+ final LinearLayout.LayoutParams params = generateIconLayoutParams();
+ for (int i = 0; i < mNotificationIcons.getChildCount(); i++) {
+ View child = mNotificationIcons.getChildAt(i);
+ child.setLayoutParams(params);
+ }
+ }
+
+ @NonNull
+ private LinearLayout.LayoutParams generateIconLayoutParams() {
+ return new LinearLayout.LayoutParams(
+ mIconSize + 2 * mIconHPadding, getHeight());
+ }
+
+ private void reloadDimens(Context context) {
+ Resources res = context.getResources();
+ mIconSize = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_icon_size);
+ mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding);
+ }
+
/**
* Returns the view that represents the notification area.
*/
@@ -125,8 +144,7 @@ public class NotificationIconAreaController {
* Updates the notifications with the given list of notifications to display.
*/
public void updateNotificationIcons(NotificationData notificationData) {
- final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- mIconSize + 2 * mIconHPadding, getHeight());
+ final LinearLayout.LayoutParams params = generateIconLayoutParams();
ArrayList<NotificationData.Entry> activeNotifications =
notificationData.getActiveNotifications();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 67f2042c5889..b75c29165b0a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -86,6 +86,7 @@ import android.view.ThreadedRenderer;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
+import android.view.ViewParent;
import android.view.ViewStub;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
@@ -762,14 +763,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mStackScroller.setHeadsUpManager(mHeadsUpManager);
mGroupManager.setOnGroupChangeListener(mStackScroller);
- mKeyguardIconOverflowContainer =
- (NotificationOverflowContainer) LayoutInflater.from(mContext).inflate(
- R.layout.status_bar_notification_keyguard_overflow, mStackScroller, false);
- mKeyguardIconOverflowContainer.setOnActivatedListener(this);
- mKeyguardIconOverflowContainer.setOnClickListener(mOverflowClickListener);
- mStackScroller.setOverflowContainer(mKeyguardIconOverflowContainer);
-
-
+ inflateOverflowContainer();
inflateEmptyShadeView();
inflateDismissView();
mExpandedContents = mStackScroller;
@@ -950,15 +944,62 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
return new BatteryControllerImpl(mContext);
}
+ private void inflateOverflowContainer() {
+ mKeyguardIconOverflowContainer =
+ (NotificationOverflowContainer) LayoutInflater.from(mContext).inflate(
+ R.layout.status_bar_notification_keyguard_overflow, mStackScroller, false);
+ mKeyguardIconOverflowContainer.setOnActivatedListener(this);
+ mKeyguardIconOverflowContainer.setOnClickListener(mOverflowClickListener);
+ mStackScroller.setOverflowContainer(mKeyguardIconOverflowContainer);
+ }
+
@Override
- protected void reInflateViews() {
- super.reInflateViews();
- mScrimController.reInflateViews();
- mBrightnessMirrorController.reInflate();
+ protected void onDensityOrFontScaleChanged() {
+ super.onDensityOrFontScaleChanged();
+ mScrimController.onDensityOrFontScaleChanged();
+ mStatusBarView.onDensityOrFontScaleChanged();
+ mBrightnessMirrorController.onDensityOrFontScaleChanged();
+ inflateSignalClusters();
+ mIconController.onDensityOrFontScaleChanged();
inflateDismissView();
updateClearAll();
inflateEmptyShadeView();
updateEmptyShadeView();
+ inflateOverflowContainer();
+ }
+
+ private void inflateSignalClusters() {
+ SignalClusterView signalClusterView = reinflateSignalCluster(mStatusBarView);
+ mIconController.setSignalCluster(signalClusterView);
+ reinflateSignalCluster(mKeyguardStatusView);
+ }
+
+ private SignalClusterView reinflateSignalCluster(View view) {
+ SignalClusterView signalCluster =
+ (SignalClusterView) view.findViewById(R.id.signal_cluster);
+ if (signalCluster != null) {
+ ViewParent parent = signalCluster.getParent();
+ if (parent instanceof ViewGroup) {
+ ViewGroup viewParent = (ViewGroup) parent;
+ int index = viewParent.indexOfChild(signalCluster);
+ viewParent.removeView(signalCluster);
+ SignalClusterView newCluster = (SignalClusterView) LayoutInflater.from(mContext)
+ .inflate(R.layout.signal_cluster_view, viewParent, false);
+ ViewGroup.MarginLayoutParams layoutParams =
+ (ViewGroup.MarginLayoutParams) viewParent.getLayoutParams();
+ layoutParams.setMarginsRelative(
+ mContext.getResources().getDimensionPixelSize(
+ R.dimen.signal_cluster_margin_start),
+ 0, 0, 0);
+ newCluster.setLayoutParams(layoutParams);
+ newCluster.setSecurityController(mSecurityController);
+ newCluster.setNetworkController(mNetworkController);
+ viewParent.addView(newCluster, index);
+ return newCluster;
+ }
+ return signalCluster;
+ }
+ return null;
}
private void inflateEmptyShadeView() {
@@ -3252,17 +3293,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
// SystemUIService notifies SystemBars of configuration changes, which then calls down here
@Override
protected void onConfigurationChanged(Configuration newConfig) {
+ updateResources();
+ updateDisplaySize(); // populates mDisplayMetrics
super.onConfigurationChanged(newConfig); // calls refreshLayout
if (DEBUG) {
Log.v(TAG, "configuration changed: " + mContext.getResources().getConfiguration());
}
- updateDisplaySize(); // populates mDisplayMetrics
- updateResources();
repositionNavigationBar();
updateRowStates();
- mIconController.updateResources();
+ mIconController.defineSlots();
mScreenPinningRequest.onConfigurationChanged();
mNetworkController.onConfigurationChanged();
}
@@ -3333,7 +3374,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mMaxAllowedKeyguardNotifications = res.getInteger(
R.integer.keyguard_max_notification_count);
- if (DEBUG) Log.v(TAG, "updateResources");
+ if (DEBUG) Log.v(TAG, "defineSlots");
}
// Visibility reporting
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index cc3b4bddb787..c80b3ad47a4a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -21,10 +21,12 @@ import android.util.AttributeSet;
import android.util.EventLog;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import com.android.systemui.DejankUtils;
import com.android.systemui.EventLogTags;
+import com.android.systemui.R;
public class PhoneStatusBarView extends PanelBar {
private static final String TAG = "PhoneStatusBarView";
@@ -185,4 +187,11 @@ public class PhoneStatusBarView extends PanelBar {
float scrimFraction = Math.max(mPanelFraction, mMinFraction);
mScrimController.setPanelExpansion(scrimFraction);
}
+
+ public void onDensityOrFontScaleChanged() {
+ ViewGroup.LayoutParams layoutParams = getLayoutParams();
+ layoutParams.height = getResources().getDimensionPixelSize(
+ R.dimen.status_bar_height);
+ setLayoutParams(layoutParams);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 490fd40267ac..cf5277f26535 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -521,7 +521,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
mScrimBehind.setChangeRunnable(changeRunnable);
}
- public void reInflateViews() {
+ public void onDensityOrFontScaleChanged() {
ViewGroup.LayoutParams layoutParams = mHeadsUpScrim.getLayoutParams();
layoutParams.height = mHeadsUpScrim.getResources().getDimensionPixelSize(
R.dimen.heads_up_scrim_height);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
index a40aa8338d89..f415ae588c4e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java
@@ -76,6 +76,7 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl
private View mNotificationIconAreaInner;
private BatteryMeterView mBatteryMeterView;
+ private BatteryMeterView mBatteryMeterViewKeyguard;
private TextView mClock;
private int mIconSize;
@@ -129,39 +130,43 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl
mStatusIconsKeyguard = (LinearLayout) keyguardStatusBar.findViewById(R.id.statusIcons);
mBatteryMeterView = (BatteryMeterView) statusBar.findViewById(R.id.battery);
- maybeScaleBatteryMeterView(context);
+ mBatteryMeterViewKeyguard = (BatteryMeterView) keyguardStatusBar.findViewById(R.id.battery);
+ scaleBatteryMeterViews(context);
mClock = (TextView) statusBar.findViewById(R.id.clock);
mDarkModeIconColorSingleTone = context.getColor(R.color.dark_mode_icon_color_single_tone);
mLightModeIconColorSingleTone = context.getColor(R.color.light_mode_icon_color_single_tone);
mHandler = new Handler();
- updateResources();
+ defineSlots();
+ loadDimens();
TunerService.get(mContext).addTunable(this, ICON_BLACKLIST);
}
+ public void setSignalCluster(SignalClusterView signalCluster) {
+ mSignalCluster = signalCluster;
+ }
+
/**
- * Looks up the scale factor for status bar icons and scales the battery view by that amount
- * if appropriate.
+ * Looks up the scale factor for status bar icons and scales the battery view by that amount.
*/
- private void maybeScaleBatteryMeterView(Context context) {
+ private void scaleBatteryMeterViews(Context context) {
Resources res = context.getResources();
TypedValue typedValue = new TypedValue();
res.getValue(R.dimen.status_bar_icon_scale_factor, typedValue, true);
float iconScaleFactor = typedValue.getFloat();
- if (iconScaleFactor == 1.f) {
- return;
- }
-
- float batteryHeight = res.getDimension(R.dimen.status_bar_battery_icon_height);
- float batteryWidth = res.getDimension(R.dimen.status_bar_battery_icon_width);
+ int batteryHeight = res.getDimensionPixelSize(R.dimen.status_bar_battery_icon_height);
+ int batteryWidth = res.getDimensionPixelSize(R.dimen.status_bar_battery_icon_width);
+ int marginBottom = res.getDimensionPixelSize(R.dimen.battery_margin_bottom);
LinearLayout.LayoutParams scaledLayoutParams = new LinearLayout.LayoutParams(
(int) (batteryWidth * iconScaleFactor), (int) (batteryHeight * iconScaleFactor));
+ scaledLayoutParams.setMarginsRelative(0, 0, 0, marginBottom);
mBatteryMeterView.setLayoutParams(scaledLayoutParams);
+ mBatteryMeterViewKeyguard.setLayoutParams(scaledLayoutParams);
}
@Override
@@ -185,15 +190,16 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl
setIcon(views.get(i).getSlot(), views.get(i).getStatusBarIcon());
}
}
-
- public void updateResources() {
+ private void loadDimens() {
mIconSize = mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.status_bar_icon_size);
mIconHPadding = mContext.getResources().getDimensionPixelSize(
R.dimen.status_bar_icon_padding);
+ }
+
+ public void defineSlots() {
defineSlots(mContext.getResources().getStringArray(
com.android.internal.R.array.config_statusBarIcons));
- FontSizeUtils.updateFontSize(mClock, R.dimen.status_bar_clock_size);
}
private void addSystemIcon(int index, StatusBarIcon icon) {
@@ -571,4 +577,35 @@ public class StatusBarIconController extends StatusBarIconList implements Tunabl
}
return ret;
}
+
+ public void onDensityOrFontScaleChanged() {
+ loadDimens();
+ mNotificationIconAreaController.onDensityOrFontScaleChanged(mContext);
+ updateClock();
+ for (int i = 0; i < mStatusIcons.getChildCount(); i++) {
+ View child = mStatusIcons.getChildAt(i);
+ LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT, mIconSize);
+ lp.setMargins(mIconHPadding, 0, mIconHPadding, 0);
+ child.setLayoutParams(lp);
+ }
+ for (int i = 0; i < mStatusIconsKeyguard.getChildCount(); i++) {
+ View child = mStatusIconsKeyguard.getChildAt(i);
+ LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT, mIconSize);
+ child.setLayoutParams(lp);
+ }
+ scaleBatteryMeterViews(mContext);
+ }
+
+ private void updateClock() {
+ FontSizeUtils.updateFontSize(mClock, R.dimen.status_bar_clock_size);
+ mClock.setPaddingRelative(
+ mContext.getResources().getDimensionPixelSize(
+ R.dimen.status_bar_clock_starting_padding),
+ 0,
+ mContext.getResources().getDimensionPixelSize(
+ R.dimen.status_bar_clock_end_padding),
+ 0);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
index 62d6b7675a05..97b31f248fa1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconList.java
@@ -26,10 +26,13 @@ public class StatusBarIconList {
private ArrayList<StatusBarIcon> mIcons = new ArrayList<>();
public void defineSlots(String[] slots) {
+ mSlots.clear();
final int N = slots.length;
for (int i=0; i < N; i++) {
mSlots.add(slots[i]);
- mIcons.add(null);
+ if (mIcons.size() < mSlots.size()) {
+ mIcons.add(null);
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
index 30af7fbab6d0..7a6d080a5824 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java
@@ -108,7 +108,7 @@ public class BrightnessMirrorController {
mBrightnessMirror.setLayoutParams(lp);
}
- public void reInflate() {
+ public void onDensityOrFontScaleChanged() {
int index = mStatusBarWindow.indexOfChild(mBrightnessMirror);
mStatusBarWindow.removeView(mBrightnessMirror);
mBrightnessMirror = LayoutInflater.from(mBrightnessMirror.getContext()).inflate(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 8b52bf65a673..07115fe1c89d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -3116,8 +3116,13 @@ public class NotificationStackScrollLayout extends ViewGroup
}
public void setOverflowContainer(NotificationOverflowContainer overFlowContainer) {
+ int index = -1;
+ if (mOverflowContainer != null) {
+ index = indexOfChild(mOverflowContainer);
+ removeView(mOverflowContainer);
+ }
mOverflowContainer = overFlowContainer;
- addView(mOverflowContainer);
+ addView(mOverflowContainer, index);
}
public void updateOverflowContainerVisibility(boolean visible) {