DO NOT MERGE Fixed the padding of quick settings am: a501b9b9cb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15216090

Change-Id: I9b2ae85fff027f2f1cbde0c131f1cb950fca0e3f
This commit is contained in:
Selim Cinek
2021-07-23 22:48:33 +00:00
committed by Automerger Merge Worker
6 changed files with 38 additions and 28 deletions

View File

@@ -55,7 +55,7 @@
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
android:paddingBottom="10dp"
android:paddingBottom="24dp"
android:importantForAccessibility="yes" />
</RelativeLayout>

View File

@@ -56,6 +56,8 @@ public class QSPanel extends LinearLayout implements Tunable {
private static final String TAG = "QSPanel";
protected final Context mContext;
private final int mMediaTopMargin;
private final int mMediaTotalBottomMargin;
/**
* The index where the content starts that needs to be moved between parents
@@ -99,13 +101,14 @@ public class QSPanel extends LinearLayout implements Tunable {
protected LinearLayout mHorizontalContentContainer;
protected QSTileLayout mTileLayout;
private int mMediaTotalBottomMargin;
public QSPanel(Context context, AttributeSet attrs) {
super(context, attrs);
mUsingMediaPlayer = useQsMediaPlayer(context);
mMediaTotalBottomMargin = getResources().getDimensionPixelSize(
R.dimen.quick_settings_bottom_margin_media);
mMediaTopMargin = getResources().getDimensionPixelSize(
R.dimen.qs_tile_margin_vertical);
mContext = context;
setOrientation(VERTICAL);
@@ -328,7 +331,7 @@ public class QSPanel extends LinearLayout implements Tunable {
private void updateHorizontalLinearLayoutMargins() {
if (mHorizontalLinearLayout != null && !displayMediaMarginsOnMedia()) {
LayoutParams lp = (LayoutParams) mHorizontalLinearLayout.getLayoutParams();
lp.bottomMargin = mMediaTotalBottomMargin - getPaddingBottom();
lp.bottomMargin = Math.max(mMediaTotalBottomMargin - getPaddingBottom(), 0);
mHorizontalLinearLayout.setLayoutParams(lp);
}
}
@@ -343,6 +346,13 @@ public class QSPanel extends LinearLayout implements Tunable {
return true;
}
/**
* @return true if the media view needs margin on the top to separate it from the qs tiles
*/
protected boolean mediaNeedsTopMargin() {
return false;
}
private boolean needsDynamicRowsAndColumns() {
return true;
}
@@ -411,7 +421,9 @@ public class QSPanel extends LinearLayout implements Tunable {
// necessary if the view isn't horizontal, since otherwise the padding is
// carried in the parent of this view (to ensure correct vertical alignment)
layoutParams.bottomMargin = !horizontal || displayMediaMarginsOnMedia()
? mMediaTotalBottomMargin - getPaddingBottom() : 0;
? Math.max(mMediaTotalBottomMargin - getPaddingBottom(), 0) : 0;
layoutParams.topMargin = mediaNeedsTopMargin() && !horizontal
? mMediaTopMargin : 0;
}
}
@@ -674,6 +686,7 @@ public class QSPanel extends LinearLayout implements Tunable {
mTileLayout.setMaxColumns(horizontal ? 2 : 4);
}
updateMargins(mediaHostView);
mHorizontalLinearLayout.setVisibility(horizontal ? View.VISIBLE : View.GONE);
}
}

View File

@@ -72,6 +72,11 @@ public class QuickQSPanel extends QSPanel {
return false;
}
@Override
protected boolean mediaNeedsTopMargin() {
return true;
}
@Override
protected void updatePadding() {
// QS Panel is setting a top padding by default, which we don't need.
@@ -180,7 +185,6 @@ public class QuickQSPanel extends QSPanel {
LayoutParams.WRAP_CONTENT);
setLayoutParams(lp);
setMaxColumns(4);
mLastRowPadding = true;
}
@Override

View File

@@ -31,7 +31,6 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
protected int mCellMarginVertical;
protected int mSidePadding;
protected int mRows = 1;
protected boolean mLastRowPadding = false;
protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
protected boolean mListening;
@@ -168,9 +167,7 @@ public class TileLayout extends ViewGroup implements QSTileLayout {
}
int height = (mCellHeight + mCellMarginVertical) * mRows;
if (!mLastRowPadding) {
height -= mCellMarginVertical;
}
height -= mCellMarginVertical;
if (height < 0) height = 0;

View File

@@ -274,7 +274,9 @@ public class StackScrollAlgorithm {
// expanded. Consider updating these states in updateContentView instead so that we don't
// have to recalculate in every frame.
float currentY = -ambientState.getScrollY();
if (!ambientState.isOnKeyguard()) {
if (!ambientState.isOnKeyguard()
|| (ambientState.isBypassEnabled() && ambientState.isPulseExpanding())) {
// add top padding at the start as long as we're not on the lock screen
currentY += mNotificationScrimPadding;
}
state.firstViewInShelf = null;
@@ -324,7 +326,8 @@ public class StackScrollAlgorithm {
*/
private void updatePositionsForState(StackScrollAlgorithmState algorithmState,
AmbientState ambientState) {
if (!ambientState.isOnKeyguard()) {
if (!ambientState.isOnKeyguard()
|| (ambientState.isBypassEnabled() && ambientState.isPulseExpanding())) {
algorithmState.mCurrentYPosition += mNotificationScrimPadding;
algorithmState.mCurrentExpandedYPosition += mNotificationScrimPadding;
}
@@ -355,7 +358,9 @@ public class StackScrollAlgorithm {
&& algorithmState.firstViewInShelf != null;
final float shelfHeight = showingShelf ? ambientState.getShelf().getIntrinsicHeight() : 0f;
final float scrimPadding = ambientState.isOnKeyguard() ? 0 : mNotificationScrimPadding;
final float scrimPadding = ambientState.isOnKeyguard()
&& (!ambientState.isBypassEnabled() || !ambientState.isPulseExpanding())
? 0 : mNotificationScrimPadding;
final float stackHeight = ambientState.getStackHeight() - shelfHeight - scrimPadding;
final float stackEndHeight = ambientState.getStackEndHeight() - shelfHeight - scrimPadding;

View File

@@ -938,8 +938,6 @@ public class NotificationPanelViewController extends PanelViewController {
R.dimen.notification_panel_min_side_margin);
mIndicationBottomPadding = mResources.getDimensionPixelSize(
R.dimen.keyguard_indication_bottom_padding);
mQsNotificationTopPadding = mResources.getDimensionPixelSize(
R.dimen.qs_notification_padding);
mShelfHeight = mResources.getDimensionPixelSize(R.dimen.notification_shelf_height);
mDarkIconSize = mResources.getDimensionPixelSize(R.dimen.status_bar_icon_drawing_size_dark);
int statusbarHeight = mResources.getDimensionPixelSize(
@@ -1338,8 +1336,7 @@ public class NotificationPanelViewController extends PanelViewController {
* @return the padding of the stackscroller when unlocked
*/
private int getUnlockedStackScrollerPadding() {
return (mQs != null ? mQs.getHeader().getHeight() : 0) + mQsPeekHeight
+ mQsNotificationTopPadding;
return (mQs != null ? mQs.getHeader().getHeight() : 0) + mQsPeekHeight;
}
/**
@@ -2464,7 +2461,7 @@ public class NotificationPanelViewController extends PanelViewController {
private float calculateNotificationsTopPadding() {
if (mShouldUseSplitNotificationShade && !mKeyguardShowing) {
return mSplitShadeNotificationsTopPadding + mQsNotificationTopPadding;
return mSplitShadeNotificationsTopPadding;
}
if (mKeyguardShowing && (mQsExpandImmediate
|| mIsExpanding && mQsExpandedWhenExpandingStarted)) {
@@ -2475,7 +2472,7 @@ public class NotificationPanelViewController extends PanelViewController {
// panel. We need to take the maximum and linearly interpolate with the panel expansion
// for a nice motion.
int maxNotificationPadding = getKeyguardNotificationStaticPadding();
int maxQsPadding = mQsMaxExpansionHeight + mQsNotificationTopPadding;
int maxQsPadding = mQsMaxExpansionHeight;
int max = mBarState == KEYGUARD ? Math.max(
maxNotificationPadding, maxQsPadding) : maxQsPadding;
return (int) MathUtils.lerp((float) mQsMinExpansionHeight, (float) max,
@@ -2488,10 +2485,10 @@ public class NotificationPanelViewController extends PanelViewController {
// We can only do the smoother transition on Keyguard when we also are not collapsing
// from a scrolled quick settings.
return MathUtils.lerp((float) getKeyguardNotificationStaticPadding(),
(float) (mQsMaxExpansionHeight + mQsNotificationTopPadding),
(float) (mQsMaxExpansionHeight),
computeQsExpansionFraction());
} else {
return mQsExpansionHeight + mQsNotificationTopPadding;
return mQsExpansionHeight;
}
}
@@ -2878,10 +2875,6 @@ public class NotificationPanelViewController extends PanelViewController {
}
int maxQsHeight = mQsMaxExpansionHeight;
if (mKeyguardShowing) {
maxQsHeight += mQsNotificationTopPadding;
}
// If an animation is changing the size of the QS panel, take the animated value.
if (mQsSizeChangeAnimator != null) {
maxQsHeight = (int) mQsSizeChangeAnimator.getAnimatedValue();
@@ -4309,8 +4302,7 @@ public class NotificationPanelViewController extends PanelViewController {
if (mAccessibilityManager.isEnabled()) {
mView.setAccessibilityPaneTitle(determineAccessibilityPaneTitle());
}
mNotificationStackScrollLayoutController.setMaxTopPadding(
mQsMaxExpansionHeight + mQsNotificationTopPadding);
mNotificationStackScrollLayoutController.setMaxTopPadding(mQsMaxExpansionHeight);
}
}
@@ -4518,8 +4510,7 @@ public class NotificationPanelViewController extends PanelViewController {
if (mQs != null) {
updateQSMinHeight();
mQsMaxExpansionHeight = mQs.getDesiredHeight();
mNotificationStackScrollLayoutController.setMaxTopPadding(
mQsMaxExpansionHeight + mQsNotificationTopPadding);
mNotificationStackScrollLayoutController.setMaxTopPadding(mQsMaxExpansionHeight);
}
positionClockAndNotifications();
if (mQsExpanded && mQsFullyExpanded) {