Merge changes Id1aab629,Idb24dbd4 into nyc-dev

* changes:
  Fixed a few issues when adapting the dpi
  Fixed a few issues with status bar density changes
This commit is contained in:
Selim Cinek
2016-04-19 02:54:46 +00:00
committed by Android (Google) Code Review
15 changed files with 260 additions and 81 deletions

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2016 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/brightness_mirror"
android:layout_width="@dimen/notification_panel_width"
android:layout_height="wrap_content"
android:layout_gravity="@integer/notification_panel_layout_gravity"
android:visibility="invisible">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/brightness_mirror_background"
android:elevation="2dp">
<include layout="@layout/quick_settings_brightness_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</FrameLayout>
</FrameLayout>

View File

@@ -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"

View File

@@ -62,21 +62,7 @@
android:layout_width="match_parent"
android:layout_height="@dimen/status_bar_height" />
<FrameLayout android:id="@+id/brightness_mirror"
android:layout_width="@dimen/notification_panel_width"
android:layout_height="wrap_content"
android:layout_gravity="@integer/notification_panel_layout_gravity"
android:visibility="invisible">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="2dp"
android:background="@drawable/brightness_mirror_background">
<include layout="@layout/quick_settings_brightness_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
</FrameLayout>
<include layout="@layout/brightness_mirror" />
<ViewStub android:id="@+id/fullscreen_user_switcher_stub"
android:layout="@layout/car_fullscreen_user_switcher"

View File

@@ -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"/>

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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,23 +29,31 @@ 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);
Resources res = context.getResources();
mIconSize = res.getDimensionPixelSize(R.dimen.status_bar_icon_size);
mIconHPadding = res.getDimensionPixelSize(R.dimen.status_bar_icon_padding);
reloadDimens();
if (DEBUG) {
setBackgroundColor(0x800099FF);
}
}
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);
}
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
reloadDimens();
}
public void setOverflowIndicator(View v) {
mMoreView = v;
}

View File

@@ -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();

View File

@@ -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,13 +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();
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() {
@@ -3250,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();
}
@@ -3331,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

View File

@@ -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);
}
}

View File

@@ -24,6 +24,7 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
@@ -519,4 +520,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
public void setScrimBehindChangeRunnable(Runnable changeRunnable) {
mScrimBehind.setChangeRunnable(changeRunnable);
}
public void onDensityOrFontScaleChanged() {
ViewGroup.LayoutParams layoutParams = mHeadsUpScrim.getLayoutParams();
layoutParams.height = mHeadsUpScrim.getResources().getDimensionPixelSize(
R.dimen.heads_up_scrim_height);
mHeadsUpScrim.setLayoutParams(layoutParams);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.policy;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.widget.FrameLayout;
@@ -33,12 +34,14 @@ public class BrightnessMirrorController {
public long TRANSITION_DURATION_OUT = 150;
public long TRANSITION_DURATION_IN = 200;
private final StatusBarWindowView mStatusBarWindow;
private final ScrimView mScrimBehind;
private final View mBrightnessMirror;
private final View mNotificationPanel;
private final int[] mInt2Cache = new int[2];
private View mBrightnessMirror;
public BrightnessMirrorController(StatusBarWindowView statusBarWindow) {
mStatusBarWindow = statusBarWindow;
mScrimBehind = (ScrimView) statusBarWindow.findViewById(R.id.scrim_behind);
mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror);
mNotificationPanel = statusBarWindow.findViewById(R.id.notification_panel);
@@ -56,11 +59,11 @@ public class BrightnessMirrorController {
inAnimation(mNotificationPanel.animate())
.withLayer()
.withEndAction(new Runnable() {
@Override
public void run() {
mBrightnessMirror.setVisibility(View.INVISIBLE);
}
});
@Override
public void run() {
mBrightnessMirror.setVisibility(View.INVISIBLE);
}
});
}
private ViewPropertyAnimator outAnimation(ViewPropertyAnimator a) {
@@ -104,4 +107,12 @@ public class BrightnessMirrorController {
R.integer.notification_panel_layout_gravity);
mBrightnessMirror.setLayoutParams(lp);
}
public void onDensityOrFontScaleChanged() {
int index = mStatusBarWindow.indexOfChild(mBrightnessMirror);
mStatusBarWindow.removeView(mBrightnessMirror);
mBrightnessMirror = LayoutInflater.from(mBrightnessMirror.getContext()).inflate(
R.layout.brightness_mirror, mStatusBarWindow, false);
mStatusBarWindow.addView(mBrightnessMirror, index);
}
}

View File

@@ -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) {