summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-02-06 00:53:09 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-02-06 00:53:09 +0000
commitcbe32de4544bbd8a4a360949dc2535eeeb0e21ff (patch)
tree27db44fd6887da439e75c8b98e8fe25c3f86381f /core/java/android
parent96f3462958977a29aeb8acf102dd5e86c4a5417a (diff)
parent80b381c0736c1af43801b8ed26428abdf4d437b3 (diff)
downloadframeworks_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/android')
-rw-r--r--core/java/android/view/View.java4
-rw-r--r--core/java/android/widget/ScrollBarDrawable.java33
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);