From 2a12f6b0e4dc93a8d45c9e2d40c108dbc50d8314 Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 22 Sep 2021 14:26:21 -0400 Subject: [PATCH] Don't animate TextView marquee if not visible Test: guess Bug: ??? Change-Id: I0d978d18ca66a36b24160f71eae0766da0bdd7d4 --- core/java/android/view/View.java | 4 +++- core/java/android/widget/TextView.java | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index cfb2130508161..288eefc8807d8 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -14952,8 +14952,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * @return true if this view and all ancestors are visible as of the last * {@link #onVisibilityAggregated(boolean)} call. + * + * @hide */ - boolean isAggregatedVisible() { + public boolean isAggregatedVisible() { return (mPrivateFlags3 & PFLAG3_AGGREGATED_VISIBLE) != 0; } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 69a5e39047159..b1136e5ae1e66 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -10631,8 +10631,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return; } - if ((mMarquee == null || mMarquee.isStopped()) && (isFocused() || isSelected()) - && getLineCount() == 1 && canMarquee()) { + if ((mMarquee == null || mMarquee.isStopped()) && isAggregatedVisible() + && (isFocused() || isSelected()) && getLineCount() == 1 && canMarquee()) { if (mMarqueeFadeMode == MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS) { mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_FADE; @@ -11091,6 +11091,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + @Override + public void onVisibilityAggregated(boolean isVisible) { + super.onVisibilityAggregated(isVisible); + startStopMarquee(isVisible); + } + /** * Use {@link BaseInputConnection#removeComposingSpans * BaseInputConnection.removeComposingSpans()} to remove any IME composing @@ -13712,7 +13718,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mChoreographer.removeFrameCallback(mTickCallback); final TextView textView = mView.get(); - if (textView != null && (textView.isFocused() || textView.isSelected())) { + if (textView != null && textView.isAggregatedVisible() + && (textView.isFocused() || textView.isSelected())) { long currentMs = mChoreographer.getFrameTime(); long deltaMs = currentMs - mLastAnimationMs; mLastAnimationMs = currentMs;