diff options
author | Alan Viverette <alanv@google.com> | 2015-02-06 00:25:33 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-02-06 00:25:33 +0000 |
commit | 80b381c0736c1af43801b8ed26428abdf4d437b3 (patch) | |
tree | 102231e5aa25f1b12d9e1c1b0e8cf98941453310 | |
parent | eb6f3f885154914eec6a747265d1f568ae50380c (diff) | |
parent | 9a166c7da3d77c4b9801dbe249f78149649d5b0e (diff) | |
download | frameworks_base-80b381c0736c1af43801b8ed26428abdf4d437b3.zip frameworks_base-80b381c0736c1af43801b8ed26428abdf4d437b3.tar.gz frameworks_base-80b381c0736c1af43801b8ed26428abdf4d437b3.tar.bz2 |
am 9a166c7d: Merge "Mutate scroll bar drawables" into lmp-mr1-dev
* commit '9a166c7da3d77c4b9801dbe249f78149649d5b0e':
Mutate scroll bar drawables
-rw-r--r-- | core/java/android/view/View.java | 4 | ||||
-rw-r--r-- | core/java/android/widget/ScrollBarDrawable.java | 33 |
2 files changed, 35 insertions, 2 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 6928b2c..e4a8978 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -12872,7 +12872,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Interpolator.Result.FREEZE_END) { cache.state = ScrollabilityCache.OFF; } else { - cache.scrollBar.setAlpha(Math.round(values[0])); + cache.scrollBar.mutate().setAlpha(Math.round(values[0])); } // This will make the scroll bars inval themselves after @@ -12882,7 +12882,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } else { // We're just on -- but we may have been fading before so // reset alpha - cache.scrollBar.setAlpha(255); + cache.scrollBar.mutate().setAlpha(255); } diff --git a/core/java/android/widget/ScrollBarDrawable.java b/core/java/android/widget/ScrollBarDrawable.java index 10e9ff4..8eff1aa 100644 --- a/core/java/android/widget/ScrollBarDrawable.java +++ b/core/java/android/widget/ScrollBarDrawable.java @@ -44,6 +44,7 @@ public class ScrollBarDrawable extends Drawable { private final Rect mTempBounds = new Rect(); private boolean mAlwaysDrawHorizontalTrack; private boolean mAlwaysDrawVerticalTrack; + private boolean mMutated; public ScrollBarDrawable() { } @@ -191,6 +192,9 @@ public class ScrollBarDrawable extends Drawable { public void setVerticalThumbDrawable(Drawable thumb) { if (thumb != null) { + if (mMutated) { + thumb.mutate(); + } thumb.setState(STATE_ENABLED); mVerticalThumb = thumb; } @@ -198,6 +202,9 @@ public class ScrollBarDrawable extends Drawable { public void setVerticalTrackDrawable(Drawable track) { if (track != null) { + if (mMutated) { + track.mutate(); + } track.setState(STATE_ENABLED); } mVerticalTrack = track; @@ -205,6 +212,9 @@ public class ScrollBarDrawable extends Drawable { public void setHorizontalThumbDrawable(Drawable thumb) { if (thumb != null) { + if (mMutated) { + thumb.mutate(); + } thumb.setState(STATE_ENABLED); mHorizontalThumb = thumb; } @@ -212,6 +222,9 @@ public class ScrollBarDrawable extends Drawable { public void setHorizontalTrackDrawable(Drawable track) { if (track != null) { + if (mMutated) { + track.mutate(); + } track.setState(STATE_ENABLED); } mHorizontalTrack = track; @@ -228,6 +241,26 @@ public class ScrollBarDrawable extends Drawable { } @Override + public ScrollBarDrawable mutate() { + if (!mMutated && super.mutate() == this) { + if (mVerticalTrack != null) { + mVerticalTrack.mutate(); + } + if (mVerticalThumb != null) { + mVerticalThumb.mutate(); + } + if (mHorizontalTrack != null) { + mHorizontalTrack.mutate(); + } + if (mHorizontalThumb != null) { + mHorizontalThumb.mutate(); + } + mMutated = true; + } + return this; + } + + @Override public void setAlpha(int alpha) { if (mVerticalTrack != null) { mVerticalTrack.setAlpha(alpha); |