}
private void onSliceContentChanged(boolean hasHeader) {
- final float clockScale = hasHeader ? mSmallClockScale : 1;
+ final boolean smallClock = hasHeader || mPulsing;
+ final float clockScale = smallClock ? mSmallClockScale : 1;
float translation = (mClockView.getHeight() - (mClockView.getHeight() * clockScale)) / 2f;
- if (hasHeader) {
+ if (smallClock) {
translation -= mWidgetPadding;
}
mClockView.setTranslationY(translation);
mClockView.setScaleX(clockScale);
mClockView.setScaleY(clockScale);
- mClockSeparator.setVisibility(hasHeader ? VISIBLE : GONE);
+ mClockSeparator.setVisibility(hasHeader && !mPulsing ? VISIBLE : GONE);
}
@Override
public void setPulsing(boolean pulsing) {
mPulsing = pulsing;
+ mKeyguardSlice.setVisibility(pulsing ? GONE : VISIBLE);
+ onSliceContentChanged(mKeyguardSlice.hasHeader());
updateDozeVisibleViews();
}
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.StackStateAnimator;
+import java.util.Collection;
import java.util.List;
public class NotificationPanelView extends PanelView implements
}
}
- public void setPulsing(boolean pulsing) {
- mKeyguardStatusView.setPulsing(pulsing);
+ public void setPulsing(Collection<HeadsUpManager.HeadsUpEntry> pulsing) {
+ mKeyguardStatusView.setPulsing(pulsing != null);
+ mNotificationStackScroller.setPulsing(pulsing, mKeyguardStatusView.getLocationOnScreen()[1]
+ + mKeyguardStatusView.getClockBottom());
}
public void setAmbientIndicationBottomPadding(int ambientIndicationBottomPadding) {
private final int mSeparatorWidth;
private final int mSeparatorThickness;
private final Rect mTmpRect = new Rect();
+ private int mClockBottom;
public NotificationStackScrollLayout(Context context) {
this(context, null);
final int darkTop = (int) (mRegularTopPadding + mSeparatorThickness / 2f);
final int darkBottom = darkTop + mSeparatorThickness;
- if (mAmbientState.isDark()) {
+ if (mAmbientState.hasPulsingNotifications()) {
+ // TODO draw divider between notification and shelf
+ } else if (mAmbientState.isDark()) {
// Only draw divider on AOD if we actually have notifications
if (mFirstVisibleBackgroundChild != null) {
canvas.drawRect(darkLeft, darkTop, darkRight, darkBottom, mBackgroundPaint);
}
private void updateAlgorithmHeightAndPadding() {
- mTopPadding = mAmbientState.isDark() ? mDarkTopPadding : mRegularTopPadding;
+ if (mPulsing != null) {
+ mTopPadding = mClockBottom;
+ } else {
+ mTopPadding = mAmbientState.isDark() ? mDarkTopPadding : mRegularTopPadding;
+ }
mAmbientState.setLayoutHeight(getLayoutHeight());
updateAlgorithmLayoutMinHeight();
mAmbientState.setTopPadding(mTopPadding);
return mIsExpanded;
}
- public void setPulsing(Collection<HeadsUpManager.HeadsUpEntry> pulsing) {
+ public void setPulsing(Collection<HeadsUpManager.HeadsUpEntry> pulsing, int clockBottom) {
if (mPulsing == null && pulsing == null) {
return;
}
mPulsing = pulsing;
+ mClockBottom = clockBottom;
mAmbientState.setPulsing(pulsing);
updateNotificationAnimationStates();
+ updateAlgorithmHeightAndPadding();
updateContentHeight();
notifyHeightChangeListener(mShelf);
requestChildrenUpdate();