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
This commit is contained in:
@@ -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<TextViewTransformState> 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) {
|
||||
|
||||
Reference in New Issue
Block a user