summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-02-24 00:27:19 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-02-24 00:27:19 +0000
commit1cabfa1d017332539d5d3d34752db3e0b8b3b5a4 (patch)
tree27f15f2ebce7297a933f3b98f1219573ccd423a1
parentf28629a47b5fcd9532683e9c9ad7aad049e0106d (diff)
parent6d66c1cfeb8194e74789dd698f68b9a2a8753153 (diff)
downloadandroid_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.java75
-rw-r--r--src/com/android/launcher3/notification/NotificationItemView.java7
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;