Merge "Made sure that the media section has no background" into rvc-dev am: 0c5fe51a1a am: 785bfbf424
Change-Id: I2bdb331e2ac04662235cf910beebb43e99fded3c
This commit is contained in:
@@ -24,25 +24,4 @@
|
||||
android:paddingEnd="0dp"
|
||||
android:focusable="true"
|
||||
android:clickable="true"
|
||||
>
|
||||
|
||||
<!-- Background views required by ActivatableNotificationView. -->
|
||||
<com.android.systemui.statusbar.notification.row.NotificationBackgroundView
|
||||
android:id="@+id/backgroundNormal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
<com.android.systemui.statusbar.notification.row.NotificationBackgroundView
|
||||
android:id="@+id/backgroundDimmed"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
<com.android.systemui.statusbar.notification.FakeShadowView
|
||||
android:id="@+id/fake_shadow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
</com.android.systemui.statusbar.notification.stack.MediaHeaderView>
|
||||
/>
|
||||
|
||||
@@ -123,8 +123,6 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
private float mAppearAnimationFraction = -1.0f;
|
||||
private float mAppearAnimationTranslation;
|
||||
private int mNormalColor;
|
||||
private boolean mLastInSection;
|
||||
private boolean mFirstInSection;
|
||||
private boolean mIsBelowSpeedBump;
|
||||
|
||||
private float mNormalBackgroundVisibilityAmount;
|
||||
@@ -430,27 +428,21 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
mBackgroundDimmed.setDistanceToTopRoundness(distanceToTopRoundness);
|
||||
}
|
||||
|
||||
public boolean isLastInSection() {
|
||||
return mLastInSection;
|
||||
}
|
||||
|
||||
public boolean isFirstInSection() {
|
||||
return mFirstInSection;
|
||||
}
|
||||
|
||||
/** Sets whether this view is the last notification in a section. */
|
||||
@Override
|
||||
public void setLastInSection(boolean lastInSection) {
|
||||
if (lastInSection != mLastInSection) {
|
||||
mLastInSection = lastInSection;
|
||||
super.setLastInSection(lastInSection);
|
||||
mBackgroundNormal.setLastInSection(lastInSection);
|
||||
mBackgroundDimmed.setLastInSection(lastInSection);
|
||||
}
|
||||
}
|
||||
|
||||
/** Sets whether this view is the first notification in a section. */
|
||||
@Override
|
||||
public void setFirstInSection(boolean firstInSection) {
|
||||
if (firstInSection != mFirstInSection) {
|
||||
mFirstInSection = firstInSection;
|
||||
super.setFirstInSection(firstInSection);
|
||||
mBackgroundNormal.setFirstInSection(firstInSection);
|
||||
mBackgroundDimmed.setFirstInSection(firstInSection);
|
||||
}
|
||||
@@ -963,6 +955,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHeadsUpHeightWithoutHeader() {
|
||||
return getHeight();
|
||||
}
|
||||
|
||||
@@ -262,10 +262,7 @@ public abstract class ExpandableOutlineView extends ExpandableView {
|
||||
setClipToOutline(mAlwaysRoundBothCorners);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the topRoundness of this view.
|
||||
* @return Whether the roundness was changed.
|
||||
*/
|
||||
@Override
|
||||
public boolean setTopRoundness(float topRoundness, boolean animate) {
|
||||
if (mTopRoundness != topRoundness) {
|
||||
mTopRoundness = topRoundness;
|
||||
@@ -302,10 +299,7 @@ public abstract class ExpandableOutlineView extends ExpandableView {
|
||||
return mCurrentBottomRoundness * mOutlineRadius;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the bottom roundness of this view.
|
||||
* @return Whether the roundness was changed.
|
||||
*/
|
||||
@Override
|
||||
public boolean setBottomRoundness(float bottomRoundness, boolean animate) {
|
||||
if (mBottomRoundness != bottomRoundness) {
|
||||
mBottomRoundness = bottomRoundness;
|
||||
|
||||
@@ -67,6 +67,8 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable {
|
||||
protected int mContentShift;
|
||||
private final ExpandableViewState mViewState;
|
||||
private float mContentTranslation;
|
||||
protected boolean mLastInSection;
|
||||
protected boolean mFirstInSection;
|
||||
|
||||
public ExpandableView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
@@ -771,6 +773,44 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Sets whether this view is the first notification in a section. */
|
||||
public void setFirstInSection(boolean firstInSection) {
|
||||
mFirstInSection = firstInSection;
|
||||
}
|
||||
|
||||
/** Sets whether this view is the last notification in a section. */
|
||||
public void setLastInSection(boolean lastInSection) {
|
||||
mLastInSection = lastInSection;
|
||||
}
|
||||
|
||||
public boolean isLastInSection() {
|
||||
return mLastInSection;
|
||||
}
|
||||
|
||||
public boolean isFirstInSection() {
|
||||
return mFirstInSection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the topRoundness of this view.
|
||||
* @return Whether the roundness was changed.
|
||||
*/
|
||||
public boolean setTopRoundness(float topRoundness, boolean animate) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the bottom roundness of this view.
|
||||
* @return Whether the roundness was changed.
|
||||
*/
|
||||
public boolean setBottomRoundness(float bottomRoundness, boolean animate) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getHeadsUpHeightWithoutHeader() {
|
||||
return getHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
* A listener notifying when {@link #getActualHeight} changes.
|
||||
*/
|
||||
|
||||
@@ -64,7 +64,7 @@ public class AmbientState {
|
||||
private int mZDistanceBetweenElements;
|
||||
private int mBaseZHeight;
|
||||
private int mMaxLayoutHeight;
|
||||
private ActivatableNotificationView mLastVisibleBackgroundChild;
|
||||
private ExpandableView mLastVisibleBackgroundChild;
|
||||
private float mCurrentScrollVelocity;
|
||||
private int mStatusBarState;
|
||||
private float mExpandingVelocity;
|
||||
@@ -346,11 +346,11 @@ public class AmbientState {
|
||||
* view in the shade, without the clear all button.
|
||||
*/
|
||||
public void setLastVisibleBackgroundChild(
|
||||
ActivatableNotificationView lastVisibleBackgroundChild) {
|
||||
ExpandableView lastVisibleBackgroundChild) {
|
||||
mLastVisibleBackgroundChild = lastVisibleBackgroundChild;
|
||||
}
|
||||
|
||||
public ActivatableNotificationView getLastVisibleBackgroundChild() {
|
||||
public ExpandableView getLastVisibleBackgroundChild() {
|
||||
return mLastVisibleBackgroundChild;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,45 +16,35 @@
|
||||
|
||||
package com.android.systemui.statusbar.notification.stack;
|
||||
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableView;
|
||||
|
||||
/**
|
||||
* Root view to insert Lock screen media controls into the notification stack.
|
||||
*/
|
||||
public class MediaHeaderView extends ActivatableNotificationView {
|
||||
|
||||
private View mContentView;
|
||||
public class MediaHeaderView extends ExpandableView {
|
||||
|
||||
public MediaHeaderView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
public long performRemoveAnimation(long duration, long delay, float translationDirection,
|
||||
boolean isHeadsUpAnimation, float endLocation, Runnable onFinishedRunnable,
|
||||
AnimatorListenerAdapter animationListener) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected View getContentView() {
|
||||
return mContentView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the background color, to be used when album art changes.
|
||||
* @param color background
|
||||
*/
|
||||
public void setBackgroundColor(int color) {
|
||||
setTintColor(color);
|
||||
public void performAddAnimation(long delay, long duration, boolean isHeadsUpAppear) {
|
||||
// No animation, it doesn't need it, this would be local
|
||||
}
|
||||
|
||||
public void setContentView(ViewGroup contentView) {
|
||||
mContentView = contentView;
|
||||
addView(contentView);
|
||||
ViewGroup.LayoutParams layoutParams = contentView.getLayoutParams();
|
||||
layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
|
||||
@@ -20,7 +20,6 @@ import android.util.MathUtils;
|
||||
|
||||
import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager;
|
||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableView;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
@@ -37,10 +36,10 @@ import javax.inject.Singleton;
|
||||
@Singleton
|
||||
public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
|
||||
private final ActivatableNotificationView[] mFirstInSectionViews;
|
||||
private final ActivatableNotificationView[] mLastInSectionViews;
|
||||
private final ActivatableNotificationView[] mTmpFirstInSectionViews;
|
||||
private final ActivatableNotificationView[] mTmpLastInSectionViews;
|
||||
private final ExpandableView[] mFirstInSectionViews;
|
||||
private final ExpandableView[] mLastInSectionViews;
|
||||
private final ExpandableView[] mTmpFirstInSectionViews;
|
||||
private final ExpandableView[] mTmpLastInSectionViews;
|
||||
private final KeyguardBypassController mBypassController;
|
||||
private boolean mExpanded;
|
||||
private HashSet<ExpandableView> mAnimatedChildren;
|
||||
@@ -53,10 +52,10 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
NotificationSectionsFeatureManager sectionsFeatureManager) {
|
||||
int numberOfSections = sectionsFeatureManager.getNumberOfBuckets();
|
||||
mFirstInSectionViews = new ActivatableNotificationView[numberOfSections];
|
||||
mLastInSectionViews = new ActivatableNotificationView[numberOfSections];
|
||||
mTmpFirstInSectionViews = new ActivatableNotificationView[numberOfSections];
|
||||
mTmpLastInSectionViews = new ActivatableNotificationView[numberOfSections];
|
||||
mFirstInSectionViews = new ExpandableView[numberOfSections];
|
||||
mLastInSectionViews = new ExpandableView[numberOfSections];
|
||||
mTmpFirstInSectionViews = new ExpandableView[numberOfSections];
|
||||
mTmpLastInSectionViews = new ExpandableView[numberOfSections];
|
||||
mBypassController = keyguardBypassController;
|
||||
}
|
||||
|
||||
@@ -80,14 +79,14 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
updateView(entry.getRow(), false /* animate */);
|
||||
}
|
||||
|
||||
private void updateView(ActivatableNotificationView view, boolean animate) {
|
||||
private void updateView(ExpandableView view, boolean animate) {
|
||||
boolean changed = updateViewWithoutCallback(view, animate);
|
||||
if (changed) {
|
||||
mRoundingChangedCallback.run();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean updateViewWithoutCallback(ActivatableNotificationView view,
|
||||
private boolean updateViewWithoutCallback(ExpandableView view,
|
||||
boolean animate) {
|
||||
float topRoundness = getRoundness(view, true /* top */);
|
||||
float bottomRoundness = getRoundness(view, false /* top */);
|
||||
@@ -100,8 +99,7 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
return (firstInSection || lastInSection) && (topChanged || bottomChanged);
|
||||
}
|
||||
|
||||
private boolean isFirstInSection(ActivatableNotificationView view,
|
||||
boolean includeFirstSection) {
|
||||
private boolean isFirstInSection(ExpandableView view, boolean includeFirstSection) {
|
||||
int numNonEmptySections = 0;
|
||||
for (int i = 0; i < mFirstInSectionViews.length; i++) {
|
||||
if (view == mFirstInSectionViews[i]) {
|
||||
@@ -114,7 +112,7 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isLastInSection(ActivatableNotificationView view, boolean includeLastSection) {
|
||||
private boolean isLastInSection(ExpandableView view, boolean includeLastSection) {
|
||||
int numNonEmptySections = 0;
|
||||
for (int i = mLastInSectionViews.length - 1; i >= 0; i--) {
|
||||
if (view == mLastInSectionViews[i]) {
|
||||
@@ -127,7 +125,7 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
return false;
|
||||
}
|
||||
|
||||
private float getRoundness(ActivatableNotificationView view, boolean top) {
|
||||
private float getRoundness(ExpandableView view, boolean top) {
|
||||
if ((view.isPinned() || view.isHeadsUpAnimatingAway()) && !mExpanded) {
|
||||
return 1.0f;
|
||||
}
|
||||
@@ -174,14 +172,14 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
}
|
||||
|
||||
private boolean handleRemovedOldViews(NotificationSection[] sections,
|
||||
ActivatableNotificationView[] oldViews, boolean first) {
|
||||
ExpandableView[] oldViews, boolean first) {
|
||||
boolean anyChanged = false;
|
||||
for (ActivatableNotificationView oldView : oldViews) {
|
||||
for (ExpandableView oldView : oldViews) {
|
||||
if (oldView != null) {
|
||||
boolean isStillPresent = false;
|
||||
boolean adjacentSectionChanged = false;
|
||||
for (NotificationSection section : sections) {
|
||||
ActivatableNotificationView newView =
|
||||
ExpandableView newView =
|
||||
(first ? section.getFirstVisibleChild()
|
||||
: section.getLastVisibleChild());
|
||||
if (newView == oldView) {
|
||||
@@ -207,14 +205,14 @@ public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
|
||||
}
|
||||
|
||||
private boolean handleAddedNewViews(NotificationSection[] sections,
|
||||
ActivatableNotificationView[] oldViews, boolean first) {
|
||||
ExpandableView[] oldViews, boolean first) {
|
||||
boolean anyChanged = false;
|
||||
for (NotificationSection section : sections) {
|
||||
ActivatableNotificationView newView =
|
||||
ExpandableView newView =
|
||||
(first ? section.getFirstVisibleChild() : section.getLastVisibleChild());
|
||||
if (newView != null) {
|
||||
boolean wasAlreadyPresent = false;
|
||||
for (ActivatableNotificationView oldView : oldViews) {
|
||||
for (ExpandableView oldView : oldViews) {
|
||||
if (oldView == newView) {
|
||||
wasAlreadyPresent = true;
|
||||
break;
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package com.android.systemui.statusbar.notification.stack;
|
||||
|
||||
import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManagerKt.BUCKET_MEDIA_CONTROLS;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.ObjectAnimator;
|
||||
@@ -26,7 +28,7 @@ import android.view.animation.Interpolator;
|
||||
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.statusbar.notification.ShadeViewRefactor;
|
||||
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableView;
|
||||
|
||||
/**
|
||||
* Represents the bounds of a section of the notification shade and handles animation when the
|
||||
@@ -41,8 +43,8 @@ public class NotificationSection {
|
||||
private Rect mEndAnimationRect = new Rect();
|
||||
private ObjectAnimator mTopAnimator = null;
|
||||
private ObjectAnimator mBottomAnimator = null;
|
||||
private ActivatableNotificationView mFirstVisibleChild;
|
||||
private ActivatableNotificationView mLastVisibleChild;
|
||||
private ExpandableView mFirstVisibleChild;
|
||||
private ExpandableView mLastVisibleChild;
|
||||
|
||||
NotificationSection(View owningView, @PriorityBucket int bucket) {
|
||||
mOwningView = owningView;
|
||||
@@ -198,21 +200,21 @@ public class NotificationSection {
|
||||
mOwningView.invalidate();
|
||||
}
|
||||
|
||||
public ActivatableNotificationView getFirstVisibleChild() {
|
||||
public ExpandableView getFirstVisibleChild() {
|
||||
return mFirstVisibleChild;
|
||||
}
|
||||
|
||||
public ActivatableNotificationView getLastVisibleChild() {
|
||||
public ExpandableView getLastVisibleChild() {
|
||||
return mLastVisibleChild;
|
||||
}
|
||||
|
||||
public boolean setFirstVisibleChild(ActivatableNotificationView child) {
|
||||
public boolean setFirstVisibleChild(ExpandableView child) {
|
||||
boolean changed = mFirstVisibleChild != child;
|
||||
mFirstVisibleChild = child;
|
||||
return changed;
|
||||
}
|
||||
|
||||
public boolean setLastVisibleChild(ActivatableNotificationView child) {
|
||||
public boolean setLastVisibleChild(ExpandableView child) {
|
||||
boolean changed = mLastVisibleChild != child;
|
||||
mLastVisibleChild = child;
|
||||
return changed;
|
||||
@@ -251,7 +253,7 @@ public class NotificationSection {
|
||||
boolean shiftBackgroundWithFirst) {
|
||||
int top = minTopPosition;
|
||||
int bottom = minTopPosition;
|
||||
ActivatableNotificationView firstView = getFirstVisibleChild();
|
||||
ExpandableView firstView = getFirstVisibleChild();
|
||||
if (firstView != null) {
|
||||
// Round Y up to avoid seeing the background during animation
|
||||
int finalTranslationY = (int) Math.ceil(ViewState.getFinalTranslationY(firstView));
|
||||
@@ -276,7 +278,7 @@ public class NotificationSection {
|
||||
}
|
||||
}
|
||||
top = Math.max(minTopPosition, top);
|
||||
ActivatableNotificationView lastView = getLastVisibleChild();
|
||||
ExpandableView lastView = getLastVisibleChild();
|
||||
if (lastView != null) {
|
||||
float finalTranslationY = ViewState.getFinalTranslationY(lastView);
|
||||
int finalHeight = ExpandableViewState.getFinalActualHeight(lastView);
|
||||
@@ -302,4 +304,8 @@ public class NotificationSection {
|
||||
mBounds.bottom = bottom;
|
||||
return bottom;
|
||||
}
|
||||
|
||||
public boolean needsBackground() {
|
||||
return mFirstVisibleChild != null && mBucket != BUCKET_MEDIA_CONTROLS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ import com.android.systemui.statusbar.notification.people.PeopleHubViewAdapter
|
||||
import com.android.systemui.statusbar.notification.people.PeopleHubViewBoundary
|
||||
import com.android.systemui.statusbar.notification.people.PersonViewModel
|
||||
import com.android.systemui.statusbar.notification.people.Subscription
|
||||
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||
import com.android.systemui.statusbar.notification.row.ExpandableView
|
||||
import com.android.systemui.statusbar.notification.row.StackScrollerDecorView
|
||||
@@ -456,14 +455,14 @@ class NotificationSectionsManager @Inject internal constructor(
|
||||
private sealed class SectionBounds {
|
||||
|
||||
data class Many(
|
||||
val first: ActivatableNotificationView,
|
||||
val last: ActivatableNotificationView
|
||||
val first: ExpandableView,
|
||||
val last: ExpandableView
|
||||
) : SectionBounds()
|
||||
|
||||
data class One(val lone: ActivatableNotificationView) : SectionBounds()
|
||||
data class One(val lone: ExpandableView) : SectionBounds()
|
||||
object None : SectionBounds()
|
||||
|
||||
fun addNotif(notif: ActivatableNotificationView): SectionBounds = when (this) {
|
||||
fun addNotif(notif: ExpandableView): SectionBounds = when (this) {
|
||||
is None -> One(notif)
|
||||
is One -> Many(lone, notif)
|
||||
is Many -> copy(last = notif)
|
||||
@@ -476,8 +475,8 @@ class NotificationSectionsManager @Inject internal constructor(
|
||||
}
|
||||
|
||||
private fun NotificationSection.setFirstAndLastVisibleChildren(
|
||||
first: ActivatableNotificationView?,
|
||||
last: ActivatableNotificationView?
|
||||
first: ExpandableView?,
|
||||
last: ExpandableView?
|
||||
): Boolean {
|
||||
val firstChanged = setFirstVisibleChild(first)
|
||||
val lastChanged = setLastVisibleChild(last)
|
||||
@@ -492,7 +491,7 @@ class NotificationSectionsManager @Inject internal constructor(
|
||||
*/
|
||||
fun updateFirstAndLastViewsForAllSections(
|
||||
sections: Array<NotificationSection>,
|
||||
children: List<ActivatableNotificationView>
|
||||
children: List<ExpandableView>
|
||||
): Boolean {
|
||||
// Create mapping of bucket to section
|
||||
val sectionBounds = children.asSequence()
|
||||
|
||||
@@ -701,7 +701,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
* @return the height at which we will wake up when pulsing
|
||||
*/
|
||||
public float getWakeUpHeight() {
|
||||
ActivatableNotificationView firstChild = getFirstChildWithBackground();
|
||||
ExpandableView firstChild = getFirstChildWithBackground();
|
||||
if (firstChild != null) {
|
||||
if (mKeyguardBypassController.getBypassEnabled()) {
|
||||
return firstChild.getHeadsUpHeightWithoutHeader();
|
||||
@@ -907,7 +907,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
// TODO(kprevas): this may not be necessary any more since we don't display the shelf in AOD
|
||||
boolean anySectionHasVisibleChild = false;
|
||||
for (NotificationSection section : mSections) {
|
||||
if (section.getFirstVisibleChild() != null) {
|
||||
if (section.needsBackground()) {
|
||||
anySectionHasVisibleChild = true;
|
||||
break;
|
||||
}
|
||||
@@ -950,7 +950,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
int currentRight = right;
|
||||
boolean first = true;
|
||||
for (NotificationSection section : mSections) {
|
||||
if (section.getFirstVisibleChild() == null) {
|
||||
if (!section.needsBackground()) {
|
||||
continue;
|
||||
}
|
||||
int sectionTop = section.getCurrentBounds().top + animationYOffset;
|
||||
@@ -2685,40 +2685,40 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
}
|
||||
|
||||
@ShadeViewRefactor(RefactorComponent.COORDINATOR)
|
||||
private ActivatableNotificationView getLastChildWithBackground() {
|
||||
private ExpandableView getLastChildWithBackground() {
|
||||
int childCount = getChildCount();
|
||||
for (int i = childCount - 1; i >= 0; i--) {
|
||||
View child = getChildAt(i);
|
||||
if (child.getVisibility() != View.GONE && child instanceof ActivatableNotificationView
|
||||
ExpandableView child = (ExpandableView) getChildAt(i);
|
||||
if (child.getVisibility() != View.GONE && !(child instanceof StackScrollerDecorView)
|
||||
&& child != mShelf) {
|
||||
return (ActivatableNotificationView) child;
|
||||
return child;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ShadeViewRefactor(RefactorComponent.COORDINATOR)
|
||||
private ActivatableNotificationView getFirstChildWithBackground() {
|
||||
private ExpandableView getFirstChildWithBackground() {
|
||||
int childCount = getChildCount();
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
View child = getChildAt(i);
|
||||
if (child.getVisibility() != View.GONE && child instanceof ActivatableNotificationView
|
||||
ExpandableView child = (ExpandableView) getChildAt(i);
|
||||
if (child.getVisibility() != View.GONE && !(child instanceof StackScrollerDecorView)
|
||||
&& child != mShelf) {
|
||||
return (ActivatableNotificationView) child;
|
||||
return child;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//TODO: We shouldn't have to generate this list every time
|
||||
private List<ActivatableNotificationView> getChildrenWithBackground() {
|
||||
ArrayList<ActivatableNotificationView> children = new ArrayList<>();
|
||||
private List<ExpandableView> getChildrenWithBackground() {
|
||||
ArrayList<ExpandableView> children = new ArrayList<>();
|
||||
int childCount = getChildCount();
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
View child = getChildAt(i);
|
||||
if (child.getVisibility() != View.GONE && child instanceof ActivatableNotificationView
|
||||
ExpandableView child = (ExpandableView) getChildAt(i);
|
||||
if (child.getVisibility() != View.GONE && !(child instanceof StackScrollerDecorView)
|
||||
&& child != mShelf) {
|
||||
children.add((ActivatableNotificationView) child);
|
||||
children.add(child);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3283,13 +3283,13 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
private void updateFirstAndLastBackgroundViews() {
|
||||
NotificationSection firstSection = getFirstVisibleSection();
|
||||
NotificationSection lastSection = getLastVisibleSection();
|
||||
ActivatableNotificationView previousFirstChild =
|
||||
ExpandableView previousFirstChild =
|
||||
firstSection == null ? null : firstSection.getFirstVisibleChild();
|
||||
ActivatableNotificationView previousLastChild =
|
||||
ExpandableView previousLastChild =
|
||||
lastSection == null ? null : lastSection.getLastVisibleChild();
|
||||
|
||||
ActivatableNotificationView firstChild = getFirstChildWithBackground();
|
||||
ActivatableNotificationView lastChild = getLastChildWithBackground();
|
||||
ExpandableView firstChild = getFirstChildWithBackground();
|
||||
ExpandableView lastChild = getLastChildWithBackground();
|
||||
boolean sectionViewsChanged = mSectionsManager.updateFirstAndLastViewsForAllSections(
|
||||
mSections, getChildrenWithBackground());
|
||||
|
||||
@@ -4575,7 +4575,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
? (ExpandableNotificationRow) view
|
||||
: null;
|
||||
NotificationSection firstSection = getFirstVisibleSection();
|
||||
ActivatableNotificationView firstVisibleChild =
|
||||
ExpandableView firstVisibleChild =
|
||||
firstSection == null ? null : firstSection.getFirstVisibleChild();
|
||||
if (row != null) {
|
||||
if (row == firstVisibleChild
|
||||
@@ -4611,7 +4611,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
|
||||
}
|
||||
int layoutEnd = mMaxLayoutHeight + (int) mStackTranslation;
|
||||
NotificationSection lastSection = getLastVisibleSection();
|
||||
ActivatableNotificationView lastVisibleChild =
|
||||
ExpandableView lastVisibleChild =
|
||||
lastSection == null ? null : lastSection.getLastVisibleChild();
|
||||
if (row != lastVisibleChild && mShelf.getVisibility() != GONE) {
|
||||
layoutEnd -= mShelf.getIntrinsicHeight() + mPaddingBetweenElements;
|
||||
|
||||
Reference in New Issue
Block a user