Merge "Replace PNG-based seekbar thumb animation with AVD" into mnc-dev
diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java
index ff74c60..a4c8d1c 100644
--- a/core/java/android/widget/AbsSeekBar.java
+++ b/core/java/android/widget/AbsSeekBar.java
@@ -86,10 +86,10 @@
     public AbsSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
 
-        TypedArray a = context.obtainStyledAttributes(
-                attrs, com.android.internal.R.styleable.SeekBar, defStyleAttr, defStyleRes);
+        final TypedArray a = context.obtainStyledAttributes(
+                attrs, R.styleable.SeekBar, defStyleAttr, defStyleRes);
 
-        final Drawable thumb = a.getDrawable(com.android.internal.R.styleable.SeekBar_thumb);
+        final Drawable thumb = a.getDrawable(R.styleable.SeekBar_thumb);
         setThumb(thumb);
 
         if (a.hasValue(R.styleable.SeekBar_thumbTintMode)) {
@@ -103,18 +103,22 @@
             mHasThumbTint = true;
         }
 
+        mSplitTrack = a.getBoolean(R.styleable.SeekBar_splitTrack, false);
+
         // Guess thumb offset if thumb != null, but allow layout to override.
-        final int thumbOffset = a.getDimensionPixelOffset(
-                com.android.internal.R.styleable.SeekBar_thumbOffset, getThumbOffset());
+        final int thumbOffset = a.getDimensionPixelOffset(R.styleable.SeekBar_thumbOffset, getThumbOffset());
         setThumbOffset(thumbOffset);
 
-        mSplitTrack = a.getBoolean(com.android.internal.R.styleable.SeekBar_splitTrack, false);
+        final boolean useDisabledAlpha = a.getBoolean(R.styleable.SeekBar_useDisabledAlpha, true);
         a.recycle();
 
-        a = context.obtainStyledAttributes(attrs,
-                com.android.internal.R.styleable.Theme, 0, 0);
-        mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f);
-        a.recycle();
+        if (useDisabledAlpha) {
+            final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.Theme, 0, 0);
+            mDisabledAlpha = ta.getFloat(R.styleable.Theme_disabledAlpha, 0.5f);
+            ta.recycle();
+        } else {
+            mDisabledAlpha = 1.0f;
+        }
 
         applyThumbTint();
 
@@ -360,7 +364,7 @@
         super.drawableStateChanged();
 
         final Drawable progressDrawable = getProgressDrawable();
-        if (progressDrawable != null) {
+        if (progressDrawable != null && mDisabledAlpha < 1.0f) {
             progressDrawable.setAlpha(isEnabled() ? NO_ALPHA : (int) (NO_ALPHA * mDisabledAlpha));
         }
 
diff --git a/core/res/res/anim/seekbar_thumb_pressed_to_unpressed_thumb_animation.xml b/core/res/res/anim/seekbar_thumb_pressed_to_unpressed_thumb_animation.xml
new file mode 100644
index 0000000..081b552
--- /dev/null
+++ b/core/res/res/anim/seekbar_thumb_pressed_to_unpressed_thumb_animation.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+    xmlns:android="http://schemas.android.com/apk/res/android" >
+    <objectAnimator
+        android:duration="133"
+        android:propertyName="scaleX"
+        android:valueFrom="1.5"
+        android:valueTo="1.0"
+        android:valueType="floatType"
+        android:interpolator="@android:interpolator/fast_out_slow_in" />
+    <objectAnimator
+        android:duration="133"
+        android:propertyName="scaleY"
+        android:valueFrom="1.5"
+        android:valueTo="1.0"
+        android:valueType="floatType"
+        android:interpolator="@android:interpolator/fast_out_slow_in" />
+</set>
diff --git a/core/res/res/anim/seekbar_thumb_unpressed_to_pressed_thumb_0_animation.xml b/core/res/res/anim/seekbar_thumb_unpressed_to_pressed_thumb_0_animation.xml
new file mode 100644
index 0000000..41e5a44
--- /dev/null
+++ b/core/res/res/anim/seekbar_thumb_unpressed_to_pressed_thumb_0_animation.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+    xmlns:android="http://schemas.android.com/apk/res/android" >
+    <objectAnimator
+        android:duration="533"
+        android:propertyName="scaleX"
+        android:valueFrom="1.0"
+        android:valueTo="1.5"
+        android:valueType="floatType"
+        android:interpolator="@android:interpolator/fast_out_slow_in" />
+    <objectAnimator
+        android:duration="533"
+        android:propertyName="scaleY"
+        android:valueFrom="1.0"
+        android:valueTo="1.5"
+        android:valueType="floatType"
+        android:interpolator="@android:interpolator/fast_out_slow_in" />
+</set>
diff --git a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_000.png b/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_000.png
deleted file mode 100644
index 281923e..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_001.png b/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_001.png
deleted file mode 100644
index e91d4fb..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_002.png b/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_002.png
deleted file mode 100644
index 15baded..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_003.png b/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_003.png
deleted file mode 100644
index 3d5899f..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_004.png b/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_004.png
deleted file mode 100644
index e2277bd..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_005.png b/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_005.png
deleted file mode 100644
index b502e22..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_from_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_off_mtrl_alpha.png b/core/res/res/drawable-hdpi/scrubber_control_off_mtrl_alpha.png
deleted file mode 100644
index 5a99528..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_off_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_off_pressed_mtrl_alpha.png b/core/res/res/drawable-hdpi/scrubber_control_off_pressed_mtrl_alpha.png
deleted file mode 100644
index 10ce2bc..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_off_pressed_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_000.png b/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_000.png
deleted file mode 100644
index a70be2c..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_001.png b/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_001.png
deleted file mode 100644
index 9442316..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_002.png b/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_002.png
deleted file mode 100644
index 33db4a88..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_003.png b/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_003.png
deleted file mode 100644
index 4e1cd16..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_004.png b/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_004.png
deleted file mode 100644
index d5254f4..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_005.png b/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_005.png
deleted file mode 100644
index 7aa0a3e..0000000
--- a/core/res/res/drawable-hdpi/scrubber_control_to_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_000.png b/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_000.png
deleted file mode 100644
index 377a6b4..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_001.png b/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_001.png
deleted file mode 100644
index 0859f62..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_002.png b/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_002.png
deleted file mode 100644
index bf5cdcd..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_003.png b/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_003.png
deleted file mode 100644
index 4cd177d..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_004.png b/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_004.png
deleted file mode 100644
index dfe39ca..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_005.png b/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_005.png
deleted file mode 100644
index 5d3ab99..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_from_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_off_mtrl_alpha.png b/core/res/res/drawable-mdpi/scrubber_control_off_mtrl_alpha.png
deleted file mode 100644
index e40cba8..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_off_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_off_pressed_mtrl_alpha.png b/core/res/res/drawable-mdpi/scrubber_control_off_pressed_mtrl_alpha.png
deleted file mode 100644
index 1f4b46a..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_off_pressed_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_000.png b/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_000.png
deleted file mode 100644
index 80922eb..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_001.png b/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_001.png
deleted file mode 100644
index aa77044..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_002.png b/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_002.png
deleted file mode 100644
index 7b099db..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_003.png b/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_003.png
deleted file mode 100644
index 088c86a..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_004.png b/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_004.png
deleted file mode 100644
index 3c6b9bc..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_005.png b/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_005.png
deleted file mode 100644
index adf5100..0000000
--- a/core/res/res/drawable-mdpi/scrubber_control_to_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_000.png b/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_000.png
deleted file mode 100644
index ea09a31..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_001.png b/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_001.png
deleted file mode 100644
index f9a4391..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_002.png b/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_002.png
deleted file mode 100644
index d9606e1..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_003.png b/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_003.png
deleted file mode 100644
index df2d9d0..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_004.png b/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_004.png
deleted file mode 100644
index 625a322..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_005.png b/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_005.png
deleted file mode 100644
index 79e8dde..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_from_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_off_mtrl_alpha.png b/core/res/res/drawable-xhdpi/scrubber_control_off_mtrl_alpha.png
deleted file mode 100644
index 729e0bf..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_off_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_off_pressed_mtrl_alpha.png b/core/res/res/drawable-xhdpi/scrubber_control_off_pressed_mtrl_alpha.png
deleted file mode 100644
index 754b321..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_off_pressed_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_000.png b/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_000.png
deleted file mode 100644
index e99c266..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_001.png b/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_001.png
deleted file mode 100644
index f0329a4..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_002.png b/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_002.png
deleted file mode 100644
index 42c40b7..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_003.png b/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_003.png
deleted file mode 100644
index 807491f..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_004.png b/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_004.png
deleted file mode 100644
index dfec9cc..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_005.png b/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_005.png
deleted file mode 100644
index 0ed59ea..0000000
--- a/core/res/res/drawable-xhdpi/scrubber_control_to_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_000.png b/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_000.png
deleted file mode 100644
index 46aa533..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_001.png b/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_001.png
deleted file mode 100644
index a749469..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_002.png b/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_002.png
deleted file mode 100644
index ef43f00..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_003.png b/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_003.png
deleted file mode 100644
index eebddc3..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_004.png b/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_004.png
deleted file mode 100644
index 44b654d..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_005.png b/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_005.png
deleted file mode 100644
index 6e768c1..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_from_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_off_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/scrubber_control_off_mtrl_alpha.png
deleted file mode 100644
index a2b5716..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_off_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_off_pressed_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/scrubber_control_off_pressed_mtrl_alpha.png
deleted file mode 100644
index 0319bd8..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_off_pressed_mtrl_alpha.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_000.png b/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_000.png
deleted file mode 100644
index 2ac6dae..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_001.png b/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_001.png
deleted file mode 100644
index 91c49ce..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_002.png b/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_002.png
deleted file mode 100644
index 4b4bd1f..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_003.png b/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_003.png
deleted file mode 100644
index 637e596..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_004.png b/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_004.png
deleted file mode 100644
index 42d4d2a..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_005.png b/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_005.png
deleted file mode 100644
index 995d1b2..0000000
--- a/core/res/res/drawable-xxhdpi/scrubber_control_to_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_000.png b/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_000.png
deleted file mode 100644
index 0c8f746..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_001.png b/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_001.png
deleted file mode 100644
index 5db9deb..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_002.png b/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_002.png
deleted file mode 100644
index 3aca6d3..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_003.png b/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_003.png
deleted file mode 100644
index 746c74f..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_004.png b/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_004.png
deleted file mode 100644
index 454a5b2..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_005.png b/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_005.png
deleted file mode 100644
index 80ad8cc..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_from_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_000.png b/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_000.png
deleted file mode 100644
index cfd0db4..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_000.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_001.png b/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_001.png
deleted file mode 100644
index 845092f..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_001.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_002.png b/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_002.png
deleted file mode 100644
index 0042db4..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_002.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_003.png b/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_003.png
deleted file mode 100644
index 77b2901..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_003.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_004.png b/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_004.png
deleted file mode 100644
index fb3c238..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_004.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_005.png b/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_005.png
deleted file mode 100644
index 0d28c45..0000000
--- a/core/res/res/drawable-xxxhdpi/scrubber_control_to_pressed_mtrl_005.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable/seekbar_thumb_material_anim.xml b/core/res/res/drawable/seekbar_thumb_material_anim.xml
index 4b13259..9726e73 100644
--- a/core/res/res/drawable/seekbar_thumb_material_anim.xml
+++ b/core/res/res/drawable/seekbar_thumb_material_anim.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
+<!-- Copyright (C) 2015 The Android Open Source Project
 
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
@@ -14,61 +14,36 @@
      limitations under the License.
 -->
 
-<animated-selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true">
-    <item android:state_enabled="false" android:state_pressed="true">
-        <bitmap android:src="@drawable/scrubber_control_off_mtrl_alpha" android:gravity="center" android:tint="?attr/colorControlActivated" android:alpha="?attr/disabledAlpha" />
-    </item>
+<animated-selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_enabled="false">
-        <bitmap android:src="@drawable/scrubber_control_off_mtrl_alpha" android:gravity="center" android:tint="?attr/colorControlNormal" android:alpha="?attr/disabledAlpha" />
+        <shape
+            android:shape="ring"
+            android:innerRadius="2dp"
+            android:thickness="2dp"
+            android:useLevel="false"
+            android:tint="?attr/colorControlNormal"
+            android:opticalInsetLeft="3dp"
+            android:opticalInsetRight="3dp">
+            <solid
+                android:color="#ff000000" />
+            <size
+                android:width="18dp"
+                android:height="18dp" />
+        </shape>
     </item>
-    <item android:state_pressed="true" android:id="@+id/pressed">
-        <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_005" android:gravity="center" android:tint="?attr/colorControlActivated" />
-    </item>
-    <item android:id="@+id/not_pressed">
-        <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_000" android:gravity="center" android:tint="?attr/colorControlActivated" />
-    </item>
-    <transition android:fromId="@+id/not_pressed" android:toId="@+id/pressed">
-        <animation-list>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_000" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_001" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_002" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_003" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_004" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_to_pressed_mtrl_005" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-        </animation-list>
-    </transition>
-    <transition android:fromId="@+id/pressed" android:toId="@+id/not_pressed">
-        <animation-list>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_from_pressed_mtrl_000" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_from_pressed_mtrl_001" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_from_pressed_mtrl_002" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_from_pressed_mtrl_003" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_from_pressed_mtrl_004" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-            <item android:duration="15">
-                <bitmap android:src="@drawable/scrubber_control_from_pressed_mtrl_005" android:gravity="center" android:tint="?attr/colorControlActivated" />
-            </item>
-        </animation-list>
-    </transition>
+    <item
+        android:id="@+id/pressed"
+        android:state_pressed="true"
+        android:drawable="@drawable/seekbar_thumb_pressed_to_unpressed" />
+    <item
+        android:id="@+id/unpressed"
+        android:drawable="@drawable/seekbar_thumb_unpressed_to_pressed" />
+    <transition
+        android:fromId="@+id/unpressed"
+        android:toId="@+id/pressed"
+        android:drawable="@drawable/seekbar_thumb_unpressed_to_pressed_animation" />
+    <transition
+        android:fromId="@+id/pressed"
+        android:toId="@+id/unpressed"
+        android:drawable="@drawable/seekbar_thumb_pressed_to_unpressed_animation" />
 </animated-selector>
diff --git a/core/res/res/drawable/seekbar_thumb_pressed_to_unpressed.xml b/core/res/res/drawable/seekbar_thumb_pressed_to_unpressed.xml
new file mode 100644
index 0000000..c2c678af
--- /dev/null
+++ b/core/res/res/drawable/seekbar_thumb_pressed_to_unpressed.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:name="seekbar_thumb_pressed_to_unpressed"
+    android:width="18dp"
+    android:height="18dp"
+    android:viewportWidth="18"
+    android:viewportHeight="18"
+    android:tint="?attr/colorControlActivated"
+    android:opticalInsetLeft="6dp"
+    android:opticalInsetRight="6dp">
+    <group
+        android:name="thumb"
+        android:translateX="9"
+        android:translateY="9"
+        android:scaleX="1.5"
+        android:scaleY="1.5">
+        <path
+            android:name="thumb_path"
+            android:fillColor="#FF000000"
+            android:pathData="M 0.0,-6.0 c 3.3137084988,0.0 6.0,2.6862915012 6.0,6.0 c 0.0,3.3137084988 -2.6862915012,6.0 -6.0,6.0 c -3.3137084988,0.0 -6.0,-2.6862915012 -6.0,-6.0 c 0.0,-3.3137084988 2.6862915012,-6.0 6.0,-6.0 Z" />
+    </group>
+</vector>
diff --git a/core/res/res/drawable/seekbar_thumb_pressed_to_unpressed_animation.xml b/core/res/res/drawable/seekbar_thumb_pressed_to_unpressed_animation.xml
new file mode 100644
index 0000000..6a2da7d
--- /dev/null
+++ b/core/res/res/drawable/seekbar_thumb_pressed_to_unpressed_animation.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/seekbar_thumb_pressed_to_unpressed" >
+    <target
+        android:name="thumb"
+        android:animation="@anim/seekbar_thumb_pressed_to_unpressed_thumb_animation" />
+</animated-vector>
diff --git a/core/res/res/drawable/seekbar_thumb_unpressed_to_pressed.xml b/core/res/res/drawable/seekbar_thumb_unpressed_to_pressed.xml
new file mode 100644
index 0000000..8040018
--- /dev/null
+++ b/core/res/res/drawable/seekbar_thumb_unpressed_to_pressed.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:name="seekbar_thumb_unpressed_to_pressed"
+    android:width="18dp"
+    android:height="18dp"
+    android:viewportWidth="18"
+    android:viewportHeight="18"
+    android:tint="?attr/colorControlActivated"
+    android:opticalInsetLeft="6dp"
+    android:opticalInsetRight="6dp">
+    <group
+        android:name="thumb_0"
+        android:translateX="9"
+        android:translateY="9">
+        <path
+            android:name="thumb_path_0"
+            android:fillColor="#FF000000"
+            android:pathData="M 0.0,-6.0 c 3.3137084988,0.0 6.0,2.6862915012 6.0,6.0 c 0.0,3.3137084988 -2.6862915012,6.0 -6.0,6.0 c -3.3137084988,0.0 -6.0,-2.6862915012 -6.0,-6.0 c 0.0,-3.3137084988 2.6862915012,-6.0 6.0,-6.0 Z" />
+    </group>
+</vector>
diff --git a/core/res/res/drawable/seekbar_thumb_unpressed_to_pressed_animation.xml b/core/res/res/drawable/seekbar_thumb_unpressed_to_pressed_animation.xml
new file mode 100644
index 0000000..1c2b3a9
--- /dev/null
+++ b/core/res/res/drawable/seekbar_thumb_unpressed_to_pressed_animation.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:drawable="@drawable/seekbar_thumb_unpressed_to_pressed" >
+    <target
+        android:name="thumb_0"
+        android:animation="@anim/seekbar_thumb_unpressed_to_pressed_thumb_0_animation" />
+</animated-vector>
diff --git a/core/res/res/drawable/seekbar_track_material.xml b/core/res/res/drawable/seekbar_track_material.xml
index 01eb243..6e40c48 100644
--- a/core/res/res/drawable/seekbar_track_material.xml
+++ b/core/res/res/drawable/seekbar_track_material.xml
@@ -20,7 +20,7 @@
         <shape android:shape="rectangle"
                android:tint="?attr/colorControlNormal">
             <size android:height="@dimen/seekbar_track_background_height_material" />
-            <solid android:color="@color/white_disabled_material" />
+            <solid android:color="#ff000000" />
         </shape>
     </item>
     <item android:id="@id/secondaryProgress"
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 039c5e0..a65c5c1 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3909,6 +3909,11 @@
         <attr name="thumbOffset" format="dimension" />
         <!-- Whether to split the track and leave a gap for the thumb drawable. -->
         <attr name="splitTrack" format="boolean" />
+        <!-- Whether to force the track's alpha to ?android:attr/disabledAlpha
+             when disabled. This is required for Holo and Gingerbread, but
+             should always be false for Material and  beyond.
+             @hide Developers shouldn't need to change this. -->
+        <attr name="useDisabledAlpha" format="boolean" />
         <!-- Tint to apply to the button graphic. -->
         <attr name="thumbTint" format="color" />
         <!-- Blending mode used to apply the button graphic tint. -->
@@ -5118,6 +5123,18 @@
         <!-- When a tint color is set, specifies its Porter-Duff blending mode. The
              default value is src_in, which treats the drawable as an alpha mask. -->
         <attr name="tintMode" />
+        <!-- Left optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetLeft" />
+        <!-- Top optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetTop" />
+        <!-- Right optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetRight" />
+        <!-- Bottom optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetBottom" />
     </declare-styleable>
 
     <!-- Used to specify the size of the shape for GradientDrawable. -->
@@ -5579,6 +5596,18 @@
         <!-- The opacity of the whole vector drawable, as a value between 0
              (completely transparent) and 1 (completely opaque). -->
         <attr name="alpha" />
+        <!-- Left optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetLeft" format="dimension" />
+        <!-- Top optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetTop" format="dimension" />
+        <!-- Right optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetRight" format="dimension" />
+        <!-- Bottom optical inset.
+             @hide Until optical insets are fully supported. -->
+        <attr name="opticalInsetBottom" format="dimension" />
     </declare-styleable>
 
     <!-- Defines the group used in VectorDrawables. -->
diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml
index 56eafe1..f9fcf38 100644
--- a/core/res/res/values/styles_material.xml
+++ b/core/res/res/values/styles_material.xml
@@ -721,6 +721,7 @@
         <item name="indeterminateDrawable">@drawable/seekbar_track_material</item>
         <item name="thumb">@drawable/seekbar_thumb_material_anim</item>
         <item name="splitTrack">true</item>
+        <item name="useDisabledAlpha">false</item>
         <item name="focusable">true</item>
         <item name="paddingStart">16dip</item>
         <item name="paddingEnd">16dip</item>
diff --git a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
index 073acd4..100c2f4 100644
--- a/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/AnimatedVectorDrawable.java
@@ -26,6 +26,7 @@
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
+import android.graphics.Insets;
 import android.graphics.Outline;
 import android.graphics.PorterDuff;
 import android.graphics.Rect;
@@ -287,6 +288,12 @@
         mAnimatedVectorState.mVectorDrawable.getOutline(outline);
     }
 
+    /** @hide */
+    @Override
+    public Insets getOpticalInsets() {
+        return mAnimatedVectorState.mVectorDrawable.getOpticalInsets();
+    }
+
     @Override
     public void inflate(Resources res, XmlPullParser parser, AttributeSet attrs, Theme theme)
             throws XmlPullParserException, IOException {
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index 4c2817c..ed47eed 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -25,6 +25,7 @@
 import android.graphics.Color;
 import android.graphics.ColorFilter;
 import android.graphics.DashPathEffect;
+import android.graphics.Insets;
 import android.graphics.LinearGradient;
 import android.graphics.Outline;
 import android.graphics.Paint;
@@ -1107,6 +1108,16 @@
         if (tint != null) {
             state.mTint = tint;
         }
+
+        final int insetLeft = a.getDimensionPixelSize(
+                R.styleable.GradientDrawable_opticalInsetLeft, state.mOpticalInsets.left);
+        final int insetTop = a.getDimensionPixelSize(
+                R.styleable.GradientDrawable_opticalInsetTop, state.mOpticalInsets.top);
+        final int insetRight = a.getDimensionPixelSize(
+                R.styleable.GradientDrawable_opticalInsetRight, state.mOpticalInsets.right);
+        final int insetBottom = a.getDimensionPixelSize(
+                R.styleable.GradientDrawable_opticalInsetBottom, state.mOpticalInsets.bottom);
+        state.mOpticalInsets = Insets.of(insetLeft, insetTop, insetRight, insetBottom);
     }
 
     @Override
@@ -1469,6 +1480,12 @@
         return mGradientState.mHeight;
     }
 
+    /** @hide */
+    @Override
+    public Insets getOpticalInsets() {
+        return mGradientState.mOpticalInsets;
+    }
+
     @Override
     public ConstantState getConstantState() {
         mGradientState.mChangingConfigurations = getChangingConfigurations();
@@ -1573,6 +1590,7 @@
         public int mInnerRadius = -1;
         public int mThickness = -1;
         public boolean mDither = false;
+        public Insets mOpticalInsets = Insets.NONE;
 
         float mCenterX = 0.5f;
         float mCenterY = 0.5f;
@@ -1631,6 +1649,7 @@
             mInnerRadius = state.mInnerRadius;
             mThickness = state.mThickness;
             mDither = state.mDither;
+            mOpticalInsets = state.mOpticalInsets;
             mCenterX = state.mCenterX;
             mCenterY = state.mCenterY;
             mGradientRadius = state.mGradientRadius;
diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java
index f4df14e..b9f3f2a 100644
--- a/graphics/java/android/graphics/drawable/VectorDrawable.java
+++ b/graphics/java/android/graphics/drawable/VectorDrawable.java
@@ -23,6 +23,7 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.ColorFilter;
+import android.graphics.Insets;
 import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Path;
@@ -361,6 +362,12 @@
         return (int) mVectorState.mVPathRenderer.mBaseHeight;
     }
 
+    /** @hide */
+    @Override
+    public Insets getOpticalInsets() {
+        return mVectorState.mVPathRenderer.mOpticalInsets;
+    }
+
     @Override
     public boolean canApplyTheme() {
         return (mVectorState != null && mVectorState.canApplyTheme()) || super.canApplyTheme();
@@ -524,6 +531,16 @@
                     "<vector> tag requires height > 0");
         }
 
+        final int insetLeft = a.getDimensionPixelSize(
+                R.styleable.VectorDrawable_opticalInsetLeft, pathRenderer.mOpticalInsets.left);
+        final int insetTop = a.getDimensionPixelSize(
+                R.styleable.VectorDrawable_opticalInsetTop, pathRenderer.mOpticalInsets.top);
+        final int insetRight = a.getDimensionPixelSize(
+                R.styleable.VectorDrawable_opticalInsetRight, pathRenderer.mOpticalInsets.right);
+        final int insetBottom = a.getDimensionPixelSize(
+                R.styleable.VectorDrawable_opticalInsetBottom, pathRenderer.mOpticalInsets.bottom);
+        pathRenderer.mOpticalInsets = Insets.of(insetLeft, insetTop, insetRight, insetBottom);
+
         final float alphaInFloat = a.getFloat(R.styleable.VectorDrawable_alpha,
                 pathRenderer.getAlpha());
         pathRenderer.setAlpha(alphaInFloat);
@@ -821,6 +838,7 @@
         float mBaseHeight = 0;
         float mViewportWidth = 0;
         float mViewportHeight = 0;
+        Insets mOpticalInsets = Insets.NONE;
         int mRootAlpha = 0xFF;
         String mRootName = null;
 
@@ -859,6 +877,7 @@
             mBaseHeight = copy.mBaseHeight;
             mViewportWidth = copy.mViewportWidth;
             mViewportHeight = copy.mViewportHeight;
+            mOpticalInsets = copy.mOpticalInsets;
             mChangingConfigurations = copy.mChangingConfigurations;
             mRootAlpha = copy.mRootAlpha;
             mRootName = copy.mRootName;