diff options
author | Alan Viverette <alanv@google.com> | 2015-02-06 00:53:09 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-02-06 00:53:09 +0000 |
commit | cbe32de4544bbd8a4a360949dc2535eeeb0e21ff (patch) | |
tree | 27db44fd6887da439e75c8b98e8fe25c3f86381f /core/java | |
parent | 96f3462958977a29aeb8acf102dd5e86c4a5417a (diff) | |
parent | 80b381c0736c1af43801b8ed26428abdf4d437b3 (diff) | |
download | frameworks_base-cbe32de4544bbd8a4a360949dc2535eeeb0e21ff.zip frameworks_base-cbe32de4544bbd8a4a360949dc2535eeeb0e21ff.tar.gz frameworks_base-cbe32de4544bbd8a4a360949dc2535eeeb0e21ff.tar.bz2 |
am 9a166c7d: Merge "Mutate scroll bar drawables" into lmp-mr1-dev
automerge: 80b381c
* commit '80b381c0736c1af43801b8ed26428abdf4d437b3':
Mutate scroll bar drawables
Diffstat (limited to 'core/java')
-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); |