From 049f6adfb8fea4622af5cd3247514ec7a461bf46 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Tue, 1 Mar 2016 12:06:57 -0800 Subject: [PATCH] Fixed a bug where the notification texts wouldn't animate If the texts were the same but one had an ellipsis and the other didn't, things were not animating nicely. Bug: 27419215 Change-Id: Iaa9611e1cf60b6fe71113b76f36ab5c24e461961 --- .../notification/TextViewTransformState.java | 24 ++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java index 5ab441dca6e8..d3393b330355 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/TextViewTransformState.java @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification; +import android.text.Layout; import android.text.TextUtils; import android.util.Pools; import android.view.View; @@ -28,14 +29,13 @@ public class TextViewTransformState extends TransformState { private static Pools.SimplePool sInstancePool = new Pools.SimplePool<>(40); - private CharSequence mText; + private TextView mText; @Override public void initFrom(View view) { super.initFrom(view); if (view instanceof TextView) { - TextView txt = (TextView) view; - mText = txt.getText(); + mText = (TextView) view; } } @@ -43,11 +43,27 @@ public class TextViewTransformState extends TransformState { protected boolean sameAs(TransformState otherState) { if (otherState instanceof TextViewTransformState) { TextViewTransformState otherTvs = (TextViewTransformState) otherState; - return TextUtils.equals(otherTvs.mText, mText); + if(TextUtils.equals(otherTvs.mText.getText(), mText.getText())) { + int ownEllipsized = getEllipsisCount(); + int otherEllipsized = otherTvs.getEllipsisCount(); + return ownEllipsized == otherEllipsized; + } } return super.sameAs(otherState); } + private int getEllipsisCount() { + Layout l = mText.getLayout(); + if (l != null) { + int lines = l.getLineCount(); + if (lines > 0) { + // we only care about the first line + return l.getEllipsisCount(0); + } + } + return 0; + } + public static TextViewTransformState obtain() { TextViewTransformState instance = sInstancePool.acquire(); if (instance != null) { -- 2.11.0