Merge changes Id1aab629,Idb24dbd4 into nyc-dev
am: 1ed0c12
* commit '1ed0c12a657eb3f569cfcc5329ef4532e83d0f87':
Fixed a few issues when adapting the dpi
Fixed a few issues with status bar density changes
Change-Id: I6429bd487ec5362c57959aa9a31d0f3d7ef233c4
This commit is contained in:
32
packages/SystemUI/res/layout/brightness_mirror.xml
Normal file
32
packages/SystemUI/res/layout/brightness_mirror.xml
Normal 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>
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -914,7 +914,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;
|
||||
}
|
||||
@@ -930,7 +930,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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user