Loading packages/SystemUI/res/layout/keyguard_status_bar.xml +29 −22 Original line number Diff line number Diff line Loading @@ -25,10 +25,25 @@ android:baselineAligned="false" > <LinearLayout android:id="@+id/status_icon_area" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:gravity="center_vertical|end" > <FrameLayout android:id="@+id/system_icons_container" android:layout_width="0dp" android:layout_height="@dimen/status_bar_height" android:layout_weight="1" android:layout_marginStart="@dimen/system_icons_super_container_margin_start" android:gravity="center_vertical|end" android:paddingEnd="@dimen/system_icons_keyguard_padding_end" > <include layout="@layout/system_icons" /> </FrameLayout> <com.android.systemui.statusbar.phone.MultiUserSwitch android:id="@+id/multi_user_switch" android:layout_width="@dimen/multi_user_switch_width_keyguard" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:background="@drawable/ripple_drawable" android:layout_marginEnd="@dimen/multi_user_switch_keyguard_margin"> <ImageView android:id="@+id/multi_user_avatar" Loading @@ -37,29 +52,21 @@ android:layout_gravity="center" android:scaleType="centerInside"/> </com.android.systemui.statusbar.phone.MultiUserSwitch> <LinearLayout android:id="@+id/system_icons_super_container" android:layout_width="wrap_content" android:layout_height="@*android:dimen/quick_qs_total_height" android:layout_toStartOf="@id/multi_user_switch" android:layout_alignWithParentIfMissing="true" android:layout_marginStart="@dimen/system_icons_super_container_margin_start" android:paddingEnd="@dimen/system_icons_keyguard_padding_end"> <FrameLayout android:id="@+id/system_icons_container" android:layout_width="wrap_content" android:layout_height="@dimen/status_bar_height" android:layout_gravity="center_vertical" > <include layout="@layout/system_icons" /> </FrameLayout> </LinearLayout> <Space android:id="@+id/cutout_space_view" android:layout_width="0dp" android:layout_height="match_parent" android:gravity="center" android:visibility="gone" /> <com.android.keyguard.CarrierText android:id="@+id/keyguard_carrier_text" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/keyguard_carrier_text_margin" android:layout_toStartOf="@id/system_icons_super_container" android:layout_toStartOf="@id/system_icons_container" android:gravity="center_vertical" android:ellipsize="marquee" android:textAppearance="?android:attr/textAppearanceSmall" Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +116 −24 Original line number Diff line number Diff line Loading @@ -26,10 +26,13 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.TypedValue; import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewTreeObserver; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; Loading Loading @@ -59,6 +62,10 @@ import com.android.systemui.statusbar.policy.UserSwitcherController; public class KeyguardStatusBarView extends RelativeLayout implements BatteryStateChangeCallback, OnUserInfoChangedListener, ConfigurationListener { private static final int LAYOUT_NONE = 0; private static final int LAYOUT_CUTOUT = 1; private static final int LAYOUT_NO_CUTOUT = 2; private boolean mBatteryCharging; private boolean mKeyguardUserSwitcherShowing; private boolean mBatteryListening; Loading @@ -78,6 +85,10 @@ public class KeyguardStatusBarView extends RelativeLayout private View mSystemIconsContainer; private TintedIconManager mIconManager; private View mCutoutSpace; private ViewGroup mStatusIconArea; private int mLayoutState = LAYOUT_NONE; public KeyguardStatusBarView(Context context, AttributeSet attrs) { super(context, attrs); } Loading @@ -85,12 +96,13 @@ public class KeyguardStatusBarView extends RelativeLayout @Override protected void onFinishInflate() { super.onFinishInflate(); mSystemIconsSuperContainer = findViewById(R.id.system_icons_super_container); mSystemIconsContainer = findViewById(R.id.system_icons_container); mMultiUserSwitch = findViewById(R.id.multi_user_switch); mMultiUserAvatar = findViewById(R.id.multi_user_avatar); mCarrierLabel = findViewById(R.id.keyguard_carrier_text); mBatteryView = mSystemIconsContainer.findViewById(R.id.battery); mCutoutSpace = findViewById(R.id.cutout_space_view); mStatusIconArea = findViewById(R.id.status_icon_area); loadDimens(); updateUserSwitcher(); Loading @@ -106,6 +118,7 @@ public class KeyguardStatusBarView extends RelativeLayout R.dimen.multi_user_avatar_keyguard_size); mMultiUserAvatar.setLayoutParams(lp); // Multi-user switch lp = (MarginLayoutParams) mMultiUserSwitch.getLayoutParams(); lp.width = getResources().getDimensionPixelSize( R.dimen.multi_user_switch_width_keyguard); Loading @@ -113,21 +126,21 @@ public class KeyguardStatusBarView extends RelativeLayout R.dimen.multi_user_switch_keyguard_margin)); mMultiUserSwitch.setLayoutParams(lp); lp = (MarginLayoutParams) mSystemIconsSuperContainer.getLayoutParams(); // System icons lp = (MarginLayoutParams) mStatusIconArea.getLayoutParams(); lp.height = getResources().getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_total_height); lp.setMarginStart(getResources().getDimensionPixelSize( R.dimen.system_icons_super_container_margin_start)); mSystemIconsSuperContainer.setLayoutParams(lp); mSystemIconsSuperContainer.setPaddingRelative(mSystemIconsSuperContainer.getPaddingStart(), mSystemIconsSuperContainer.getPaddingTop(), getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end), mSystemIconsSuperContainer.getPaddingBottom()); com.android.internal.R.dimen.status_bar_height); lp = (MarginLayoutParams) mSystemIconsContainer.getLayoutParams(); lp.height = getResources().getDimensionPixelSize( R.dimen.status_bar_height); lp.setMarginStart(getResources().getDimensionPixelSize( R.dimen.system_icons_super_container_margin_start)); mSystemIconsContainer.setLayoutParams(lp); mSystemIconsContainer.setPaddingRelative(mSystemIconsContainer.getPaddingStart(), mSystemIconsContainer.getPaddingTop(), getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end), mSystemIconsContainer.getPaddingBottom()); // Respect font size setting. mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, Loading @@ -153,13 +166,13 @@ public class KeyguardStatusBarView extends RelativeLayout } private void updateVisibilities() { if (mMultiUserSwitch.getParent() != this && !mKeyguardUserSwitcherShowing) { if (mMultiUserSwitch.getParent() != mStatusIconArea && !mKeyguardUserSwitcherShowing) { if (mMultiUserSwitch.getParent() != null) { getOverlay().remove(mMultiUserSwitch); } addView(mMultiUserSwitch, 0); } else if (mMultiUserSwitch.getParent() == this && mKeyguardUserSwitcherShowing) { removeView(mMultiUserSwitch); mStatusIconArea.addView(mMultiUserSwitch, 0); } else if (mMultiUserSwitch.getParent() == mStatusIconArea && mKeyguardUserSwitcherShowing) { mStatusIconArea.removeView(mMultiUserSwitch); } if (mKeyguardUserSwitcher == null) { // If we have no keyguard switcher, the screen width is under 600dp. In this case, Loading @@ -175,8 +188,8 @@ public class KeyguardStatusBarView extends RelativeLayout } private void updateSystemIconsLayoutParams() { RelativeLayout.LayoutParams lp = (LayoutParams) mSystemIconsSuperContainer.getLayoutParams(); LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); // If the avatar icon is gone, we need to have some end margin to display the system icons // correctly. int baseMarginEnd = mMultiUserSwitch.getVisibility() == View.GONE Loading @@ -186,10 +199,88 @@ public class KeyguardStatusBarView extends RelativeLayout baseMarginEnd; if (marginEnd != lp.getMarginEnd()) { lp.setMarginEnd(marginEnd); mSystemIconsSuperContainer.setLayoutParams(lp); mSystemIconsContainer.setLayoutParams(lp); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { updateLayoutConsideringCutout(); setSignalClusterLayoutWidth(); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } private void updateLayoutConsideringCutout() { DisplayCutout dc = getRootWindowInsets().getDisplayCutout(); if (dc == null) { updateLayoutParamsNoCutout(); } else { updateLayoutParamsForCutout(dc); } } private void updateLayoutParamsNoCutout() { if (mLayoutState == LAYOUT_NO_CUTOUT) { return; } mLayoutState = LAYOUT_NO_CUTOUT; if (mCutoutSpace != null) { mCutoutSpace.setVisibility(View.GONE); } RelativeLayout.LayoutParams lp = (LayoutParams) mCarrierLabel.getLayoutParams(); lp.addRule(RelativeLayout.START_OF, R.id.status_icon_area); lp = (LayoutParams) mStatusIconArea.getLayoutParams(); lp.removeRule(RelativeLayout.RIGHT_OF); lp.width = LayoutParams.WRAP_CONTENT; LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); llp.setMarginStart(getResources().getDimensionPixelSize( R.dimen.system_icons_super_container_margin_start)); } private void updateLayoutParamsForCutout(DisplayCutout dc) { if (mLayoutState == LAYOUT_CUTOUT) { return; } mLayoutState = LAYOUT_CUTOUT; if (mCutoutSpace == null) { updateLayoutParamsNoCutout(); } mCutoutSpace.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams lp = (LayoutParams) mCutoutSpace.getLayoutParams(); lp.width = dc.getBoundingRect().width(); lp.height = dc.getBoundingRect().height(); lp.addRule(RelativeLayout.CENTER_IN_PARENT); lp = (LayoutParams) mCarrierLabel.getLayoutParams(); lp.addRule(RelativeLayout.START_OF, R.id.cutout_space_view); lp = (LayoutParams) mStatusIconArea.getLayoutParams(); lp.addRule(RelativeLayout.RIGHT_OF, R.id.cutout_space_view); lp.width = LayoutParams.MATCH_PARENT; LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); llp.setMarginStart(0); } //TODO: Something is setting signal_cluster to MATCH_PARENT. Why? private void setSignalClusterLayoutWidth() { View signalCluster = findViewById(R.id.signal_cluster); if (signalCluster == null) { return; } LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) signalCluster.getLayoutParams(); lp.width = LinearLayout.LayoutParams.WRAP_CONTENT; } public void setListening(boolean listening) { if (listening == mBatteryListening) { return; Loading Loading @@ -265,20 +356,21 @@ public class KeyguardStatusBarView extends RelativeLayout animateNextLayoutChange(); } updateVisibilities(); updateLayoutConsideringCutout(); updateSystemIconsLayoutParams(); } private void animateNextLayoutChange() { final int systemIconsCurrentX = mSystemIconsSuperContainer.getLeft(); final boolean userSwitcherVisible = mMultiUserSwitch.getParent() == this; final int systemIconsCurrentX = mSystemIconsContainer.getLeft(); final boolean userSwitcherVisible = mMultiUserSwitch.getParent() == mStatusIconArea; getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { getViewTreeObserver().removeOnPreDrawListener(this); boolean userSwitcherHiding = userSwitcherVisible && mMultiUserSwitch.getParent() != KeyguardStatusBarView.this; mSystemIconsSuperContainer.setX(systemIconsCurrentX); mSystemIconsSuperContainer.animate() && mMultiUserSwitch.getParent() != mStatusIconArea; mSystemIconsContainer.setX(systemIconsCurrentX); mSystemIconsContainer.animate() .translationX(0) .setDuration(400) .setStartDelay(userSwitcherHiding ? 300 : 0) Loading Loading @@ -315,8 +407,8 @@ public class KeyguardStatusBarView extends RelativeLayout public void setVisibility(int visibility) { super.setVisibility(visibility); if (visibility != View.VISIBLE) { mSystemIconsSuperContainer.animate().cancel(); mSystemIconsSuperContainer.setTranslationX(0); mSystemIconsContainer.animate().cancel(); mSystemIconsContainer.setTranslationX(0); mMultiUserSwitch.animate().cancel(); mMultiUserSwitch.setAlpha(1f); } else { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +7 −2 Original line number Diff line number Diff line Loading @@ -69,10 +69,14 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = MeasureSpec.getSize(widthMeasureSpec); int widthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.UNSPECIFIED); final int count = getChildCount(); // Measure all children so that they report the correct width for (int i = 0; i < count; i++) { measureChild(getChildAt(i), widthMeasureSpec, heightMeasureSpec); measureChild(getChildAt(i), widthSpec, heightMeasureSpec); } } Loading @@ -99,7 +103,8 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { int childCount = getChildCount(); // Underflow === don't show content until that index int firstUnderflowIndex = -1; if (DEBUG) android.util.Log.d(TAG, "calculateIconTransitions: start=" + translationX); if (DEBUG) android.util.Log.d(TAG, "calculateIconTransitions: start=" + translationX + " width=" + width); //TODO: Dots for (int i = childCount - 1; i >= 0; i--) { Loading Loading
packages/SystemUI/res/layout/keyguard_status_bar.xml +29 −22 Original line number Diff line number Diff line Loading @@ -25,10 +25,25 @@ android:baselineAligned="false" > <LinearLayout android:id="@+id/status_icon_area" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:gravity="center_vertical|end" > <FrameLayout android:id="@+id/system_icons_container" android:layout_width="0dp" android:layout_height="@dimen/status_bar_height" android:layout_weight="1" android:layout_marginStart="@dimen/system_icons_super_container_margin_start" android:gravity="center_vertical|end" android:paddingEnd="@dimen/system_icons_keyguard_padding_end" > <include layout="@layout/system_icons" /> </FrameLayout> <com.android.systemui.statusbar.phone.MultiUserSwitch android:id="@+id/multi_user_switch" android:layout_width="@dimen/multi_user_switch_width_keyguard" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:background="@drawable/ripple_drawable" android:layout_marginEnd="@dimen/multi_user_switch_keyguard_margin"> <ImageView android:id="@+id/multi_user_avatar" Loading @@ -37,29 +52,21 @@ android:layout_gravity="center" android:scaleType="centerInside"/> </com.android.systemui.statusbar.phone.MultiUserSwitch> <LinearLayout android:id="@+id/system_icons_super_container" android:layout_width="wrap_content" android:layout_height="@*android:dimen/quick_qs_total_height" android:layout_toStartOf="@id/multi_user_switch" android:layout_alignWithParentIfMissing="true" android:layout_marginStart="@dimen/system_icons_super_container_margin_start" android:paddingEnd="@dimen/system_icons_keyguard_padding_end"> <FrameLayout android:id="@+id/system_icons_container" android:layout_width="wrap_content" android:layout_height="@dimen/status_bar_height" android:layout_gravity="center_vertical" > <include layout="@layout/system_icons" /> </FrameLayout> </LinearLayout> <Space android:id="@+id/cutout_space_view" android:layout_width="0dp" android:layout_height="match_parent" android:gravity="center" android:visibility="gone" /> <com.android.keyguard.CarrierText android:id="@+id/keyguard_carrier_text" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="@dimen/keyguard_carrier_text_margin" android:layout_toStartOf="@id/system_icons_super_container" android:layout_toStartOf="@id/system_icons_container" android:gravity="center_vertical" android:ellipsize="marquee" android:textAppearance="?android:attr/textAppearanceSmall" Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +116 −24 Original line number Diff line number Diff line Loading @@ -26,10 +26,13 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.util.TypedValue; import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewTreeObserver; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; Loading Loading @@ -59,6 +62,10 @@ import com.android.systemui.statusbar.policy.UserSwitcherController; public class KeyguardStatusBarView extends RelativeLayout implements BatteryStateChangeCallback, OnUserInfoChangedListener, ConfigurationListener { private static final int LAYOUT_NONE = 0; private static final int LAYOUT_CUTOUT = 1; private static final int LAYOUT_NO_CUTOUT = 2; private boolean mBatteryCharging; private boolean mKeyguardUserSwitcherShowing; private boolean mBatteryListening; Loading @@ -78,6 +85,10 @@ public class KeyguardStatusBarView extends RelativeLayout private View mSystemIconsContainer; private TintedIconManager mIconManager; private View mCutoutSpace; private ViewGroup mStatusIconArea; private int mLayoutState = LAYOUT_NONE; public KeyguardStatusBarView(Context context, AttributeSet attrs) { super(context, attrs); } Loading @@ -85,12 +96,13 @@ public class KeyguardStatusBarView extends RelativeLayout @Override protected void onFinishInflate() { super.onFinishInflate(); mSystemIconsSuperContainer = findViewById(R.id.system_icons_super_container); mSystemIconsContainer = findViewById(R.id.system_icons_container); mMultiUserSwitch = findViewById(R.id.multi_user_switch); mMultiUserAvatar = findViewById(R.id.multi_user_avatar); mCarrierLabel = findViewById(R.id.keyguard_carrier_text); mBatteryView = mSystemIconsContainer.findViewById(R.id.battery); mCutoutSpace = findViewById(R.id.cutout_space_view); mStatusIconArea = findViewById(R.id.status_icon_area); loadDimens(); updateUserSwitcher(); Loading @@ -106,6 +118,7 @@ public class KeyguardStatusBarView extends RelativeLayout R.dimen.multi_user_avatar_keyguard_size); mMultiUserAvatar.setLayoutParams(lp); // Multi-user switch lp = (MarginLayoutParams) mMultiUserSwitch.getLayoutParams(); lp.width = getResources().getDimensionPixelSize( R.dimen.multi_user_switch_width_keyguard); Loading @@ -113,21 +126,21 @@ public class KeyguardStatusBarView extends RelativeLayout R.dimen.multi_user_switch_keyguard_margin)); mMultiUserSwitch.setLayoutParams(lp); lp = (MarginLayoutParams) mSystemIconsSuperContainer.getLayoutParams(); // System icons lp = (MarginLayoutParams) mStatusIconArea.getLayoutParams(); lp.height = getResources().getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_total_height); lp.setMarginStart(getResources().getDimensionPixelSize( R.dimen.system_icons_super_container_margin_start)); mSystemIconsSuperContainer.setLayoutParams(lp); mSystemIconsSuperContainer.setPaddingRelative(mSystemIconsSuperContainer.getPaddingStart(), mSystemIconsSuperContainer.getPaddingTop(), getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end), mSystemIconsSuperContainer.getPaddingBottom()); com.android.internal.R.dimen.status_bar_height); lp = (MarginLayoutParams) mSystemIconsContainer.getLayoutParams(); lp.height = getResources().getDimensionPixelSize( R.dimen.status_bar_height); lp.setMarginStart(getResources().getDimensionPixelSize( R.dimen.system_icons_super_container_margin_start)); mSystemIconsContainer.setLayoutParams(lp); mSystemIconsContainer.setPaddingRelative(mSystemIconsContainer.getPaddingStart(), mSystemIconsContainer.getPaddingTop(), getResources().getDimensionPixelSize(R.dimen.system_icons_keyguard_padding_end), mSystemIconsContainer.getPaddingBottom()); // Respect font size setting. mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, Loading @@ -153,13 +166,13 @@ public class KeyguardStatusBarView extends RelativeLayout } private void updateVisibilities() { if (mMultiUserSwitch.getParent() != this && !mKeyguardUserSwitcherShowing) { if (mMultiUserSwitch.getParent() != mStatusIconArea && !mKeyguardUserSwitcherShowing) { if (mMultiUserSwitch.getParent() != null) { getOverlay().remove(mMultiUserSwitch); } addView(mMultiUserSwitch, 0); } else if (mMultiUserSwitch.getParent() == this && mKeyguardUserSwitcherShowing) { removeView(mMultiUserSwitch); mStatusIconArea.addView(mMultiUserSwitch, 0); } else if (mMultiUserSwitch.getParent() == mStatusIconArea && mKeyguardUserSwitcherShowing) { mStatusIconArea.removeView(mMultiUserSwitch); } if (mKeyguardUserSwitcher == null) { // If we have no keyguard switcher, the screen width is under 600dp. In this case, Loading @@ -175,8 +188,8 @@ public class KeyguardStatusBarView extends RelativeLayout } private void updateSystemIconsLayoutParams() { RelativeLayout.LayoutParams lp = (LayoutParams) mSystemIconsSuperContainer.getLayoutParams(); LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); // If the avatar icon is gone, we need to have some end margin to display the system icons // correctly. int baseMarginEnd = mMultiUserSwitch.getVisibility() == View.GONE Loading @@ -186,10 +199,88 @@ public class KeyguardStatusBarView extends RelativeLayout baseMarginEnd; if (marginEnd != lp.getMarginEnd()) { lp.setMarginEnd(marginEnd); mSystemIconsSuperContainer.setLayoutParams(lp); mSystemIconsContainer.setLayoutParams(lp); } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { updateLayoutConsideringCutout(); setSignalClusterLayoutWidth(); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } private void updateLayoutConsideringCutout() { DisplayCutout dc = getRootWindowInsets().getDisplayCutout(); if (dc == null) { updateLayoutParamsNoCutout(); } else { updateLayoutParamsForCutout(dc); } } private void updateLayoutParamsNoCutout() { if (mLayoutState == LAYOUT_NO_CUTOUT) { return; } mLayoutState = LAYOUT_NO_CUTOUT; if (mCutoutSpace != null) { mCutoutSpace.setVisibility(View.GONE); } RelativeLayout.LayoutParams lp = (LayoutParams) mCarrierLabel.getLayoutParams(); lp.addRule(RelativeLayout.START_OF, R.id.status_icon_area); lp = (LayoutParams) mStatusIconArea.getLayoutParams(); lp.removeRule(RelativeLayout.RIGHT_OF); lp.width = LayoutParams.WRAP_CONTENT; LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); llp.setMarginStart(getResources().getDimensionPixelSize( R.dimen.system_icons_super_container_margin_start)); } private void updateLayoutParamsForCutout(DisplayCutout dc) { if (mLayoutState == LAYOUT_CUTOUT) { return; } mLayoutState = LAYOUT_CUTOUT; if (mCutoutSpace == null) { updateLayoutParamsNoCutout(); } mCutoutSpace.setVisibility(View.VISIBLE); RelativeLayout.LayoutParams lp = (LayoutParams) mCutoutSpace.getLayoutParams(); lp.width = dc.getBoundingRect().width(); lp.height = dc.getBoundingRect().height(); lp.addRule(RelativeLayout.CENTER_IN_PARENT); lp = (LayoutParams) mCarrierLabel.getLayoutParams(); lp.addRule(RelativeLayout.START_OF, R.id.cutout_space_view); lp = (LayoutParams) mStatusIconArea.getLayoutParams(); lp.addRule(RelativeLayout.RIGHT_OF, R.id.cutout_space_view); lp.width = LayoutParams.MATCH_PARENT; LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams) mSystemIconsContainer.getLayoutParams(); llp.setMarginStart(0); } //TODO: Something is setting signal_cluster to MATCH_PARENT. Why? private void setSignalClusterLayoutWidth() { View signalCluster = findViewById(R.id.signal_cluster); if (signalCluster == null) { return; } LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) signalCluster.getLayoutParams(); lp.width = LinearLayout.LayoutParams.WRAP_CONTENT; } public void setListening(boolean listening) { if (listening == mBatteryListening) { return; Loading Loading @@ -265,20 +356,21 @@ public class KeyguardStatusBarView extends RelativeLayout animateNextLayoutChange(); } updateVisibilities(); updateLayoutConsideringCutout(); updateSystemIconsLayoutParams(); } private void animateNextLayoutChange() { final int systemIconsCurrentX = mSystemIconsSuperContainer.getLeft(); final boolean userSwitcherVisible = mMultiUserSwitch.getParent() == this; final int systemIconsCurrentX = mSystemIconsContainer.getLeft(); final boolean userSwitcherVisible = mMultiUserSwitch.getParent() == mStatusIconArea; getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { getViewTreeObserver().removeOnPreDrawListener(this); boolean userSwitcherHiding = userSwitcherVisible && mMultiUserSwitch.getParent() != KeyguardStatusBarView.this; mSystemIconsSuperContainer.setX(systemIconsCurrentX); mSystemIconsSuperContainer.animate() && mMultiUserSwitch.getParent() != mStatusIconArea; mSystemIconsContainer.setX(systemIconsCurrentX); mSystemIconsContainer.animate() .translationX(0) .setDuration(400) .setStartDelay(userSwitcherHiding ? 300 : 0) Loading Loading @@ -315,8 +407,8 @@ public class KeyguardStatusBarView extends RelativeLayout public void setVisibility(int visibility) { super.setVisibility(visibility); if (visibility != View.VISIBLE) { mSystemIconsSuperContainer.animate().cancel(); mSystemIconsSuperContainer.setTranslationX(0); mSystemIconsContainer.animate().cancel(); mSystemIconsContainer.setTranslationX(0); mMultiUserSwitch.animate().cancel(); mMultiUserSwitch.setAlpha(1f); } else { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusIconContainer.java +7 −2 Original line number Diff line number Diff line Loading @@ -69,10 +69,14 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = MeasureSpec.getSize(widthMeasureSpec); int widthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.UNSPECIFIED); final int count = getChildCount(); // Measure all children so that they report the correct width for (int i = 0; i < count; i++) { measureChild(getChildAt(i), widthMeasureSpec, heightMeasureSpec); measureChild(getChildAt(i), widthSpec, heightMeasureSpec); } } Loading @@ -99,7 +103,8 @@ public class StatusIconContainer extends AlphaOptimizedLinearLayout { int childCount = getChildCount(); // Underflow === don't show content until that index int firstUnderflowIndex = -1; if (DEBUG) android.util.Log.d(TAG, "calculateIconTransitions: start=" + translationX); if (DEBUG) android.util.Log.d(TAG, "calculateIconTransitions: start=" + translationX + " width=" + width); //TODO: Dots for (int i = childCount - 1; i >= 0; i--) { Loading