diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-02-24 00:27:19 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-02-24 00:27:19 +0000 |
commit | 1cabfa1d017332539d5d3d34752db3e0b8b3b5a4 (patch) | |
tree | 27f15f2ebce7297a933f3b98f1219573ccd423a1 | |
parent | f28629a47b5fcd9532683e9c9ad7aad049e0106d (diff) | |
parent | 6d66c1cfeb8194e74789dd698f68b9a2a8753153 (diff) | |
download | android_packages_apps_Trebuchet-1cabfa1d017332539d5d3d34752db3e0b8b3b5a4.tar.gz android_packages_apps_Trebuchet-1cabfa1d017332539d5d3d34752db3e0b8b3b5a4.tar.bz2 android_packages_apps_Trebuchet-1cabfa1d017332539d5d3d34752db3e0b8b3b5a4.zip |
Merge "Remove first icon from notification footer after it animates." into ub-launcher3-dorval
-rw-r--r-- | src/com/android/launcher3/notification/NotificationFooterLayout.java | 75 | ||||
-rw-r--r-- | src/com/android/launcher3/notification/NotificationItemView.java | 7 |
2 files changed, 41 insertions, 41 deletions
diff --git a/src/com/android/launcher3/notification/NotificationFooterLayout.java b/src/com/android/launcher3/notification/NotificationFooterLayout.java index 57ec5d17c..9686ae07d 100644 --- a/src/com/android/launcher3/notification/NotificationFooterLayout.java +++ b/src/com/android/launcher3/notification/NotificationFooterLayout.java @@ -61,6 +61,7 @@ public class NotificationFooterLayout extends LinearLayout { private LinearLayout mIconRow; private int mBackgroundColor; private int mTextColor; + private TextView mOverflowView; public NotificationFooterLayout(Context context) { this(context, null, 0); @@ -120,10 +121,10 @@ public class NotificationFooterLayout extends LinearLayout { } if (!mOverflowNotifications.isEmpty()) { - TextView overflowText = new TextView(getContext()); - overflowText.setTextColor(mTextColor); - updateOverflowText(overflowText); - mIconRow.addView(overflowText, mIconLayoutParams); + mOverflowView = new TextView(getContext()); + mOverflowView.setTextColor(mTextColor); + updateOverflowText(); + mIconRow.addView(mOverflowView, mIconLayoutParams); } } @@ -142,8 +143,8 @@ public class NotificationFooterLayout extends LinearLayout { mIconRow.addView(icon, addIndex, mIconLayoutParams); } - private void updateOverflowText(TextView overflowTextView) { - overflowTextView.setText(getResources().getString(R.string.deep_notifications_overflow, + private void updateOverflowText() { + mOverflowView.setText(getResources().getString(R.string.deep_notifications_overflow, mOverflowNotifications.size())); } @@ -162,6 +163,7 @@ public class NotificationFooterLayout extends LinearLayout { @Override public void onAnimationEnd(Animator animation) { callback.onIconAnimationEnd((NotificationInfo) firstNotification.getTag()); + removeViewFromIconRow(firstNotification); } }); animation.play(moveAndScaleIcon); @@ -178,7 +180,6 @@ public class NotificationFooterLayout extends LinearLayout { public void onAnimationEnd(Animator animation) { // We have to set the translation X to 0 when the new main notification // is removed from the footer. - // TODO: remove it here instead of expecting trimNotifications to do so. child.setTranslationX(0); } }); @@ -187,6 +188,38 @@ public class NotificationFooterLayout extends LinearLayout { animation.start(); } + private void removeViewFromIconRow(View child) { + mIconRow.removeView(child); + mNotifications.remove((NotificationInfo) child.getTag()); + if (!mOverflowNotifications.isEmpty()) { + NotificationInfo notification = mOverflowNotifications.remove(0); + mNotifications.add(notification); + addNotificationIconForInfo(notification, true /* fromOverflow */); + } + if (mOverflowView != null) { + if (mOverflowNotifications.isEmpty()) { + mIconRow.removeView(mOverflowView); + mOverflowView = null; + } else { + updateOverflowText(); + } + } + if (mIconRow.getChildCount() == 0) { + // There are no more icons in the secondary view, so hide it. + PopupContainerWithArrow popup = PopupContainerWithArrow.getOpen( + Launcher.getLauncher(getContext())); + int newHeight = getResources().getDimensionPixelSize( + R.dimen.notification_footer_collapsed_height); + AnimatorSet collapseSecondary = LauncherAnimUtils.createAnimatorSet(); + collapseSecondary.play(popup.animateTranslationYBy(getHeight() - newHeight, 0)); + collapseSecondary.play(LauncherAnimUtils.animateViewHeight( + this, getHeight(), newHeight)); + collapseSecondary.setDuration(getResources().getInteger( + R.integer.config_removeNotificationViewDuration)); + collapseSecondary.start(); + } + } + public void trimNotifications(List<String> notifications) { if (!isAttachedToWindow() || mIconRow.getChildCount() == 0) { return; @@ -205,35 +238,9 @@ public class NotificationFooterLayout extends LinearLayout { } else { NotificationInfo childInfo = (NotificationInfo) child.getTag(); if (!notifications.contains(childInfo.notificationKey)) { - mIconRow.removeView(child); - mNotifications.remove(childInfo); - if (!mOverflowNotifications.isEmpty()) { - NotificationInfo notification = mOverflowNotifications.remove(0); - mNotifications.add(notification); - addNotificationIconForInfo(notification, true /* fromOverflow */); - } + removeViewFromIconRow(child); } } } - if (overflowView != null) { - if (mOverflowNotifications.isEmpty()) { - mIconRow.removeView(overflowView); - } else { - updateOverflowText(overflowView); - } - } - if (mIconRow.getChildCount() == 0) { - // There are no more icons in the secondary view, so hide it. - PopupContainerWithArrow popup = PopupContainerWithArrow.getOpen( - Launcher.getLauncher(getContext())); - int newHeight = getResources().getDimensionPixelSize( - R.dimen.notification_footer_collapsed_height); - AnimatorSet collapseSecondary = LauncherAnimUtils.createAnimatorSet(); - collapseSecondary.play(popup.animateTranslationYBy(getHeight() - newHeight, - getResources().getInteger(R.integer.config_removeNotificationViewDuration))); - collapseSecondary.play(LauncherAnimUtils.animateViewHeight( - this, getHeight(), newHeight)); - collapseSecondary.start(); - } } } diff --git a/src/com/android/launcher3/notification/NotificationItemView.java b/src/com/android/launcher3/notification/NotificationItemView.java index c9b3940b8..d58bef697 100644 --- a/src/com/android/launcher3/notification/NotificationItemView.java +++ b/src/com/android/launcher3/notification/NotificationItemView.java @@ -37,7 +37,6 @@ import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider; import com.android.launcher3.popup.PopupItemView; import com.android.launcher3.userevent.nano.LauncherLogProto; -import java.util.ArrayList; import java.util.List; import static com.android.launcher3.LauncherAnimUtils.animateViewHeight; @@ -145,12 +144,6 @@ public class NotificationItemView extends PopupItemView implements LogContainerP public void onIconAnimationEnd(NotificationInfo newMainNotification) { if (newMainNotification != null) { mMainView.applyNotificationInfo(newMainNotification, mIconView, true); - // Remove the animated notification from the footer by calling trim - // TODO: Remove the notification in NotificationFooterLayout directly - // instead of relying on this hack. - List<String> footerNotificationKeys = new ArrayList<>(notificationKeys); - footerNotificationKeys.remove(newMainNotification.notificationKey); - mFooter.trimNotifications(footerNotificationKeys); mMainView.setVisibility(VISIBLE); } mAnimatingNextIcon = false; |