Reparent status bar icons into header when expanded.
This change moves the status bar icons into the quick settings header when the status bar is expanded. Also, the universal header is now showing on the Keyguard. Change-Id: Ib91f7e0b8de9f852676a11b500c4419183db1b90
This commit is contained in:
@@ -77,26 +77,24 @@
|
||||
<LinearLayout android:id="@+id/system_icon_area"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout android:id="@+id/statusIcons"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
<LinearLayout android:id="@+id/system_icons"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/signal_battery_cluster"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="2dp"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center"
|
||||
>
|
||||
<include layout="@layout/signal_cluster_view"
|
||||
<LinearLayout android:id="@+id/statusIcons"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
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="2dp"
|
||||
/>
|
||||
<!-- battery must be padded below to match assets -->
|
||||
<com.android.systemui.BatteryMeterView
|
||||
@@ -107,7 +105,6 @@
|
||||
android:layout_marginStart="4dip"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<com.android.systemui.statusbar.policy.Clock
|
||||
android:id="@+id/clock"
|
||||
android:textAppearance="@style/TextAppearance.StatusBar.Clock"
|
||||
|
||||
@@ -65,6 +65,12 @@
|
||||
/>
|
||||
</RelativeLayout>
|
||||
|
||||
<FrameLayout android:id="@+id/system_icons_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/status_bar_header_height"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="16dp"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/header_debug_info"
|
||||
android:visibility="invisible"
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
<include layout="@layout/status_bar_expanded"
|
||||
android:layout_width="@dimen/notification_panel_width"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start|top" />
|
||||
android:layout_gravity="start|top"
|
||||
android:visibility="gone" />
|
||||
</com.android.systemui.statusbar.phone.PanelHolder>
|
||||
|
||||
</com.android.systemui.statusbar.phone.StatusBarWindowView>
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
<dimen name="close_handle_underlap">32dp</dimen>
|
||||
|
||||
<!-- Height of the status bar header bar -->
|
||||
<dimen name="status_bar_header_height">48dp</dimen>
|
||||
<dimen name="status_bar_header_height">56dp</dimen>
|
||||
|
||||
<!-- Height of the status bar header bar when expanded -->
|
||||
<dimen name="status_bar_header_height_expanded">144dp</dimen>
|
||||
|
||||
@@ -24,9 +24,11 @@ import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.VelocityTracker;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.ExpandableView;
|
||||
@@ -423,6 +425,34 @@ public class NotificationPanelView extends PanelView implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisibility(int visibility) {
|
||||
int oldVisibility = getVisibility();
|
||||
super.setVisibility(visibility);
|
||||
if (visibility != oldVisibility) {
|
||||
reparentStatusIcons(visibility == VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* When the notification panel gets expanded, we need to move the status icons in the header
|
||||
* card.
|
||||
*/
|
||||
private void reparentStatusIcons(boolean toHeader) {
|
||||
if (mStatusBar == null) {
|
||||
return;
|
||||
}
|
||||
LinearLayout systemIcons = mStatusBar.getSystemIcons();
|
||||
if (systemIcons.getParent() != null) {
|
||||
((ViewGroup) systemIcons.getParent()).removeView(systemIcons);
|
||||
}
|
||||
if (toHeader) {
|
||||
mHeader.attachSystemIcons(systemIcons);
|
||||
} else {
|
||||
mStatusBar.reattachSystemIcons();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isScrolledToBottom() {
|
||||
if (!isInSettings()) {
|
||||
|
||||
@@ -29,7 +29,6 @@ import static com.android.systemui.statusbar.phone.BarTransitions.MODE_TRANSLUCE
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityManagerNative;
|
||||
@@ -205,6 +204,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
|
||||
// right-hand icons
|
||||
LinearLayout mSystemIconArea;
|
||||
LinearLayout mSystemIcons;
|
||||
|
||||
// left-hand icons
|
||||
LinearLayout mStatusIcons;
|
||||
@@ -230,7 +230,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
QuickSettingsContainerView mSettingsContainer;
|
||||
|
||||
// top bar
|
||||
View mNotificationPanelHeader;
|
||||
StatusBarHeaderView mHeader;
|
||||
View mKeyguardStatusView;
|
||||
KeyguardBottomAreaView mKeyguardBottomArea;
|
||||
boolean mLeaveOpenOnKeyguardHide;
|
||||
@@ -607,6 +607,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
mPixelFormat = PixelFormat.OPAQUE;
|
||||
|
||||
mSystemIconArea = (LinearLayout) mStatusBarView.findViewById(R.id.system_icon_area);
|
||||
mSystemIcons = (LinearLayout) mStatusBarView.findViewById(R.id.system_icons);
|
||||
mStatusIcons = (LinearLayout)mStatusBarView.findViewById(R.id.statusIcons);
|
||||
mNotificationIcons = (IconMerger)mStatusBarView.findViewById(R.id.notificationIcons);
|
||||
mMoreIcon = mStatusBarView.findViewById(R.id.moreIcon);
|
||||
@@ -631,7 +632,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
|
||||
mExpandedContents = mStackScroller;
|
||||
|
||||
mNotificationPanelHeader = mStatusBarWindow.findViewById(R.id.header);
|
||||
mHeader = (StatusBarHeaderView) mStatusBarWindow.findViewById(R.id.header);
|
||||
mKeyguardStatusView = mStatusBarWindow.findViewById(R.id.keyguard_status_view);
|
||||
mKeyguardBottomArea =
|
||||
(KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
|
||||
@@ -640,7 +641,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
R.id.keyguard_indication_text);
|
||||
mDateView = (DateView)mStatusBarWindow.findViewById(R.id.date);
|
||||
|
||||
mDateTimeView = mNotificationPanelHeader.findViewById(R.id.datetime);
|
||||
mDateTimeView = mHeader.findViewById(R.id.datetime);
|
||||
if (mDateTimeView != null) {
|
||||
mDateTimeView.setOnClickListener(mClockClickListener);
|
||||
mDateTimeView.setEnabled(true);
|
||||
@@ -2717,19 +2718,16 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
mKeyguardIndicationTextView.setVisibility(View.VISIBLE);
|
||||
mKeyguardIndicationTextView.switchIndication(mKeyguardHotwordPhrase);
|
||||
mKeyguardCarrierLabel.setVisibility(View.VISIBLE);
|
||||
mNotificationPanelHeader.setVisibility(View.GONE);
|
||||
|
||||
mNotificationPanel.closeQs();
|
||||
mSettingsContainer.setKeyguardShowing(true);
|
||||
} else {
|
||||
mKeyguardStatusView.setVisibility(View.GONE);
|
||||
mKeyguardBottomArea.setVisibility(View.GONE);
|
||||
mKeyguardIndicationTextView.setVisibility(View.GONE);
|
||||
mKeyguardCarrierLabel.setVisibility(View.GONE);
|
||||
mNotificationPanelHeader.setVisibility(View.VISIBLE);
|
||||
|
||||
mSettingsContainer.setKeyguardShowing(false);
|
||||
}
|
||||
mSettingsContainer.setKeyguardShowing(mState == StatusBarState.KEYGUARD);
|
||||
mHeader.setKeyguardShowing(mState == StatusBarState.KEYGUARD);
|
||||
|
||||
updateStackScrollerState();
|
||||
updatePublicMode();
|
||||
@@ -2885,4 +2883,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
|
||||
public ViewGroup getQuickSettingsOverlayParent() {
|
||||
return mNotificationPanel;
|
||||
}
|
||||
|
||||
public LinearLayout getSystemIcons() {
|
||||
return mSystemIcons;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reattaches the system icons to its normal parent in collapsed status bar.
|
||||
*/
|
||||
public void reattachSystemIcons() {
|
||||
mSystemIconArea.addView(mSystemIcons, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ public class StatusBarHeaderView extends RelativeLayout {
|
||||
|
||||
private boolean mExpanded;
|
||||
private View mBackground;
|
||||
private ViewGroup mSystemIconsContainer;
|
||||
private View mDateTime;
|
||||
|
||||
private int mCollapsedHeight;
|
||||
private int mExpandedHeight;
|
||||
@@ -44,12 +46,13 @@ public class StatusBarHeaderView extends RelativeLayout {
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
mBackground = findViewById(R.id.background);
|
||||
mSystemIconsContainer = (ViewGroup) findViewById(R.id.system_icons_container);
|
||||
mDateTime = findViewById(R.id.datetime);
|
||||
loadDimens();
|
||||
}
|
||||
|
||||
private void loadDimens() {
|
||||
mCollapsedHeight = getResources().getDimensionPixelSize(
|
||||
R.dimen.status_bar_header_height);
|
||||
mCollapsedHeight = getResources().getDimensionPixelSize(R.dimen.status_bar_header_height);
|
||||
mExpandedHeight = getResources().getDimensionPixelSize(
|
||||
R.dimen.status_bar_header_height_expanded);
|
||||
}
|
||||
@@ -88,4 +91,18 @@ public class StatusBarHeaderView extends RelativeLayout {
|
||||
public View getBackgroundView() {
|
||||
return mBackground;
|
||||
}
|
||||
|
||||
public void attachSystemIcons(LinearLayout systemIcons) {
|
||||
mSystemIconsContainer.addView(systemIcons);
|
||||
}
|
||||
|
||||
public void setKeyguardShowing(boolean keyguardShowing) {
|
||||
mBackground.setVisibility(keyguardShowing ? View.INVISIBLE : View.VISIBLE);
|
||||
mDateTime.setVisibility(keyguardShowing ? View.INVISIBLE : View.VISIBLE);
|
||||
if (keyguardShowing) {
|
||||
setZ(0);
|
||||
} else {
|
||||
setTranslationZ(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user