diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2018-03-19 12:00:51 -0700 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2018-03-19 12:02:53 -0700 |
commit | 66dccad6ffb2acb36a3370f7b32d9858bf591189 (patch) | |
tree | 5d6dab0f1a46ad7b2128a7abd2a1c705938c0aa3 /src/com/android/launcher3/BubbleTextView.java | |
parent | a7c28940973ceba05074c20045476b26a5c8f39c (diff) | |
download | android_packages_apps_Trebuchet-66dccad6ffb2acb36a3370f7b32d9858bf591189.tar.gz android_packages_apps_Trebuchet-66dccad6ffb2acb36a3370f7b32d9858bf591189.tar.bz2 android_packages_apps_Trebuchet-66dccad6ffb2acb36a3370f7b32d9858bf591189.zip |
Disabling unnecessary requestLayout calls in BubbleTextView
> Disabling layout change when updating icon, if previously set
> Setting the ellipsis behavior to end, to disable relayouts when
changing text
Change-Id: Ic00c207c0372724daebd8ee1d748f5cf5aa56457
Diffstat (limited to 'src/com/android/launcher3/BubbleTextView.java')
-rw-r--r-- | src/com/android/launcher3/BubbleTextView.java | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index fc61155d3..4fd39b083 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -28,6 +28,7 @@ import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.support.v4.graphics.ColorUtils; +import android.text.TextUtils.TruncateAt; import android.util.AttributeSet; import android.util.Property; import android.util.TypedValue; @@ -163,10 +164,18 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, mLongPressHelper = new CheckLongPressHelper(this); mStylusEventHelper = new StylusEventHelper(new SimpleOnStylusPressListener(this), this); + setEllipsize(TruncateAt.END); setAccessibilityDelegate(mActivity.getAccessibilityDelegate()); } + @Override + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + // Disable marques when not focused to that, so that updating text does not cause relayout. + setEllipsize(focused ? TruncateAt.MARQUEE : TruncateAt.END); + super.onFocusChanged(focused, direction, previouslyFocusedRect); + } + /** * Resets the view so it can be recycled. */ @@ -521,31 +530,30 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver, * Sets the icon for this view based on the layout direction. */ private void setIcon(Drawable icon) { - mIcon = icon; - mIcon.setBounds(0, 0, mIconSize, mIconSize); if (mIsIconVisible) { - applyCompoundDrawables(mIcon); + applyCompoundDrawables(icon); } + mIcon = icon; } public void setIconVisible(boolean visible) { mIsIconVisible = visible; - mDisableRelayout = true; - Drawable icon = mIcon; - if (!visible) { - icon = new ColorDrawable(Color.TRANSPARENT); - icon.setBounds(0, 0, mIconSize, mIconSize); - } + Drawable icon = visible ? mIcon : new ColorDrawable(Color.TRANSPARENT); applyCompoundDrawables(icon); - mDisableRelayout = false; } protected void applyCompoundDrawables(Drawable icon) { + // If we had already set an icon before, disable relayout as the icon size is the + // same as before. + mDisableRelayout = mIcon != null; + + icon.setBounds(0, 0, mIconSize, mIconSize); if (mLayoutHorizontal) { setCompoundDrawablesRelative(icon, null, null, null); } else { setCompoundDrawables(null, icon, null, null); } + mDisableRelayout = false; } @Override |