MediaRouter: Implement chevron/caret animation

Bug: 23970688
Change-Id: I2f592750b0080395ad41fdc4c089892645129c99
diff --git a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_down_black.png b/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_down_black.png
deleted file mode 100644
index 3d7f83f..0000000
--- a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_down_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_down_white.png b/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_down_white.png
deleted file mode 100644
index bbb4fb4..0000000
--- a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_down_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_up_black.png b/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_up_black.png
deleted file mode 100644
index 57139a7..0000000
--- a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_up_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_up_white.png b/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_up_white.png
deleted file mode 100644
index dea8988..0000000
--- a/v7/mediarouter/res/drawable-hdpi/ic_keyboard_arrow_up_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_down_black.png b/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_down_black.png
deleted file mode 100644
index 5b1fa06..0000000
--- a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_down_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_down_white.png b/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_down_white.png
deleted file mode 100644
index ef8a4b6..0000000
--- a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_down_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_up_black.png b/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_up_black.png
deleted file mode 100644
index 08c16a3..0000000
--- a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_up_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_up_white.png b/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_up_white.png
deleted file mode 100644
index a2e4baa..0000000
--- a/v7/mediarouter/res/drawable-mdpi/ic_keyboard_arrow_up_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_down_black.png b/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_down_black.png
deleted file mode 100644
index 94016f4..0000000
--- a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_down_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_down_white.png b/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_down_white.png
deleted file mode 100644
index 058cebb..0000000
--- a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_down_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_up_black.png b/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_up_black.png
deleted file mode 100644
index 323360e..0000000
--- a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_up_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_up_white.png b/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_up_white.png
deleted file mode 100644
index ae36d91..0000000
--- a/v7/mediarouter/res/drawable-xhdpi/ic_keyboard_arrow_up_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_down_black.png b/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_down_black.png
deleted file mode 100644
index 17811ae..0000000
--- a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_down_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_down_white.png b/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_down_white.png
deleted file mode 100644
index f9622b7..0000000
--- a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_down_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_up_black.png b/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_up_black.png
deleted file mode 100644
index 748ed3f..0000000
--- a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_up_black.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_up_white.png b/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_up_white.png
deleted file mode 100644
index ce4aa56..0000000
--- a/v7/mediarouter/res/drawable-xxhdpi/ic_keyboard_arrow_up_white.png
+++ /dev/null
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00000.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00000.png
new file mode 100644
index 0000000..16e4cbc
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00000.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00001.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00001.png
new file mode 100644
index 0000000..6cc54b6
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00001.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00002.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00002.png
new file mode 100644
index 0000000..ae4f8fb
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00002.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00003.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00003.png
new file mode 100644
index 0000000..cd3ffdb
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00003.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00004.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00004.png
new file mode 100644
index 0000000..2285ec7
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00004.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00005.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00005.png
new file mode 100644
index 0000000..8130cb1
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00005.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00006.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00006.png
new file mode 100644
index 0000000..4369a3d
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00006.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00007.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00007.png
new file mode 100644
index 0000000..301e6c7
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00007.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00008.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00008.png
new file mode 100644
index 0000000..442cc82
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00008.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00009.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00009.png
new file mode 100644
index 0000000..78763f6
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00009.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00010.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00010.png
new file mode 100644
index 0000000..1ea59a8
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00010.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00011.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00011.png
new file mode 100644
index 0000000..77ea83a
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00011.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00012.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00012.png
new file mode 100644
index 0000000..4e742f5
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00012.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00013.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00013.png
new file mode 100644
index 0000000..fa49b62
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00013.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00014.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00014.png
new file mode 100644
index 0000000..dc477a2
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00014.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00015.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00015.png
new file mode 100644
index 0000000..dd85400
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_collapse_00015.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00000.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00000.png
new file mode 100644
index 0000000..dd85400
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00000.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00001.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00001.png
new file mode 100644
index 0000000..2586aa0
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00001.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00002.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00002.png
new file mode 100644
index 0000000..4022000
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00002.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00003.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00003.png
new file mode 100644
index 0000000..358b428
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00003.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00004.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00004.png
new file mode 100644
index 0000000..1da8c49
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00004.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00005.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00005.png
new file mode 100644
index 0000000..342d6c7
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00005.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00006.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00006.png
new file mode 100644
index 0000000..738bddd
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00006.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00007.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00007.png
new file mode 100644
index 0000000..48192c4
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00007.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00008.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00008.png
new file mode 100644
index 0000000..ff1a374
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00008.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00009.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00009.png
new file mode 100644
index 0000000..c13afcd
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00009.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00010.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00010.png
new file mode 100644
index 0000000..dde5939
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00010.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00011.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00011.png
new file mode 100644
index 0000000..5c60a08
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00011.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00012.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00012.png
new file mode 100644
index 0000000..5d75964
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00012.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00013.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00013.png
new file mode 100644
index 0000000..cf1c1cd
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00013.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00014.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00014.png
new file mode 100644
index 0000000..12ccc03
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00014.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00015.png b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00015.png
new file mode 100644
index 0000000..16e4cbc
--- /dev/null
+++ b/v7/mediarouter/res/drawable-xxxhdpi/ic_expand_00015.png
Binary files differ
diff --git a/v7/mediarouter/res/drawable/ic_collapse.xml b/v7/mediarouter/res/drawable/ic_collapse.xml
new file mode 100644
index 0000000..143e862
--- /dev/null
+++ b/v7/mediarouter/res/drawable/ic_collapse.xml
@@ -0,0 +1,35 @@
+<?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.
+-->
+
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+        android:oneshot="true">
+    <item android:drawable="@drawable/ic_collapse_00000" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00001" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00002" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00003" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00004" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00005" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00006" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00007" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00008" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00009" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00010" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00011" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00012" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00013" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00014" android:duration="13" />
+    <item android:drawable="@drawable/ic_collapse_00015" android:duration="13" />
+</animation-list>
diff --git a/v7/mediarouter/res/drawable/ic_expand.xml b/v7/mediarouter/res/drawable/ic_expand.xml
new file mode 100644
index 0000000..2bd29ae
--- /dev/null
+++ b/v7/mediarouter/res/drawable/ic_expand.xml
@@ -0,0 +1,35 @@
+<?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.
+-->
+
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+        android:oneshot="true">
+    <item android:drawable="@drawable/ic_expand_00000" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00001" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00002" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00003" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00004" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00005" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00006" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00007" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00008" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00009" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00010" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00011" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00012" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00013" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00014" android:duration="13" />
+    <item android:drawable="@drawable/ic_expand_00015" android:duration="13" />
+</animation-list>
diff --git a/v7/mediarouter/res/layout/mr_volume_control.xml b/v7/mediarouter/res/layout/mr_volume_control.xml
index 996a69f..18d7864 100644
--- a/v7/mediarouter/res/layout/mr_volume_control.xml
+++ b/v7/mediarouter/res/layout/mr_volume_control.xml
@@ -15,27 +15,29 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:layout_width="fill_parent"
-              android:layout_height="wrap_content"
-              android:minHeight="48dp"
-              android:gravity="center_vertical"
-              android:paddingLeft="24dp"
-              android:paddingRight="12dp"
-              android:background="?attr/colorPrimary">
-    <ImageView android:layout_width="24dp"
-               android:layout_height="24dp"
-               android:src="?attr/mediaRouteAudioTrackDrawable"
-               android:gravity="center"
-               android:scaleType="center" />
-    <android.support.v7.app.MediaRouteVolumeSlider android:id="@+id/mr_volume_slider"
-             android:layout_width="0dp"
-             android:layout_height="wrap_content"
-             android:layout_weight="1" />
-    <ImageButton android:id="@+id/mr_group_expand_collapse"
-                 android:layout_width="48dp"
-                 android:layout_height="48dp"
-                 android:contentDescription="@string/mr_controller_expand_group"
-                 android:src="?attr/mediaRouteExpandGroupDrawable"
-                 android:background="?attr/selectableItemBackgroundBorderless"
-                 android:visibility="gone" />
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="48dp"
+        android:gravity="center_vertical"
+        android:paddingLeft="24dp"
+        android:paddingRight="12dp"
+        android:background="?attr/colorPrimary">
+    <ImageView
+            android:layout_width="24dp"
+            android:layout_height="24dp"
+            android:src="?attr/mediaRouteAudioTrackDrawable"
+            android:gravity="center"
+            android:scaleType="center"/>
+    <android.support.v7.app.MediaRouteVolumeSlider
+            android:id="@+id/mr_volume_slider"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"/>
+    <android.support.v7.app.MediaRouteExpandCollapseButton
+            android:id="@+id/mr_group_expand_collapse"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:padding="12dp"
+            android:background="?attr/selectableItemBackgroundBorderless"
+            android:visibility="gone"/>
 </LinearLayout>
diff --git a/v7/mediarouter/res/values/themes.xml b/v7/mediarouter/res/values/themes.xml
index 7f46da7..4fe12cf 100644
--- a/v7/mediarouter/res/values/themes.xml
+++ b/v7/mediarouter/res/values/themes.xml
@@ -37,8 +37,6 @@
         <item name="mediaRouteControllerTitleTextStyle">@style/Widget.MediaRouter.ControllerText.Title.Dark</item>
         <item name="mediaRouteControllerPrimaryTextStyle">@style/Widget.MediaRouter.ControllerText.Primary.Dark</item>
         <item name="mediaRouteControllerSecondaryTextStyle">@style/Widget.MediaRouter.ControllerText.Secondary.Dark</item>
-        <item name="mediaRouteExpandGroupDrawable">@drawable/ic_keyboard_arrow_down_white</item>
-        <item name="mediaRouteCollapseGroupDrawable">@drawable/ic_keyboard_arrow_up_white</item>
     </style>
 
     <style name="Theme.MediaRouter.LightControlPanel">
@@ -48,8 +46,6 @@
         <item name="mediaRouteAudioTrackDrawable">@drawable/ic_audiotrack_light</item>
         <item name="mediaRouteControllerPrimaryTextStyle">@style/Widget.MediaRouter.ControllerText.Primary.Light</item>
         <item name="mediaRouteControllerSecondaryTextStyle">@style/Widget.MediaRouter.ControllerText.Secondary.Light</item>
-        <item name="mediaRouteExpandGroupDrawable">@drawable/ic_keyboard_arrow_down_black</item>
-        <item name="mediaRouteCollapseGroupDrawable">@drawable/ic_keyboard_arrow_up_black</item>
     </style>
 
     <style name="Theme.MediaRouter.Light">
@@ -72,8 +68,6 @@
         <item name="mediaRouteControllerTitleTextStyle">@style/Widget.MediaRouter.ControllerText.Title.Light</item>
         <item name="mediaRouteControllerPrimaryTextStyle">@style/Widget.MediaRouter.ControllerText.Primary.Light</item>
         <item name="mediaRouteControllerSecondaryTextStyle">@style/Widget.MediaRouter.ControllerText.Secondary.Light</item>
-        <item name="mediaRouteExpandGroupDrawable">@drawable/ic_keyboard_arrow_down_black</item>
-        <item name="mediaRouteCollapseGroupDrawable">@drawable/ic_keyboard_arrow_up_black</item>
     </style>
 
     <style name="Theme.MediaRouter.Light.DarkControlPanel">
@@ -83,8 +77,6 @@
         <item name="mediaRouteAudioTrackDrawable">@drawable/ic_audiotrack</item>
         <item name="mediaRouteControllerPrimaryTextStyle">@style/Widget.MediaRouter.ControllerText.Primary.Dark</item>
         <item name="mediaRouteControllerSecondaryTextStyle">@style/Widget.MediaRouter.ControllerText.Secondary.Dark</item>
-        <item name="mediaRouteExpandGroupDrawable">@drawable/ic_keyboard_arrow_down_white</item>
-        <item name="mediaRouteCollapseGroupDrawable">@drawable/ic_keyboard_arrow_up_white</item>
     </style>
 
 </resources>
diff --git a/v7/mediarouter/src/android/support/v7/app/MediaRouteControllerDialog.java b/v7/mediarouter/src/android/support/v7/app/MediaRouteControllerDialog.java
index 69132d8..b07189e 100644
--- a/v7/mediarouter/src/android/support/v7/app/MediaRouteControllerDialog.java
+++ b/v7/mediarouter/src/android/support/v7/app/MediaRouteControllerDialog.java
@@ -21,12 +21,10 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -105,7 +103,7 @@
     private Button mStopCastingButton;
     private ImageButton mPlayPauseButton;
     private ImageButton mCloseButton;
-    private ImageButton mGroupExpandCollapseButton;
+    private MediaRouteExpandCollapseButton mGroupExpandCollapseButton;
 
     private FrameLayout mCustomControlLayout;
     private FrameLayout mDefaultControlLayout;
@@ -313,34 +311,18 @@
         mVolumeChangeListener = new VolumeChangeListener();
         mVolumeSlider.setOnSeekBarChangeListener(mVolumeChangeListener);
 
-        TypedArray styledAttributes = getContext().obtainStyledAttributes(new int[] {
-                R.attr.mediaRouteExpandGroupDrawable,
-                R.attr.mediaRouteCollapseGroupDrawable
-        });
-        final Drawable expandGroupDrawable = styledAttributes.getDrawable(0);
-        final Drawable collapseGroupDrawable = styledAttributes.getDrawable(1);
-        styledAttributes.recycle();
-
-        final String expandGroupDescription = getContext().getString(
-                R.string.mr_controller_expand_group);
-        final String collapseGroupDescription = getContext().getString(
-                R.string.mr_controller_collapse_group);
-
-        mVolumeGroupList = (ListView)findViewById(R.id.mr_volume_group_list);
-        mGroupExpandCollapseButton = (ImageButton) findViewById(R.id.mr_group_expand_collapse);
+        mVolumeGroupList = (ListView) findViewById(R.id.mr_volume_group_list);
+        mGroupExpandCollapseButton =
+                (MediaRouteExpandCollapseButton) findViewById(R.id.mr_group_expand_collapse);
         mGroupExpandCollapseButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 mIsGroupExpanded = !mIsGroupExpanded;
                 if (mIsGroupExpanded) {
-                    mGroupExpandCollapseButton.setImageDrawable(collapseGroupDrawable);
-                    mGroupExpandCollapseButton.setContentDescription(collapseGroupDescription);
                     mVolumeGroupList.setVisibility(View.VISIBLE);
                     mVolumeGroupList.setAdapter(
                             new VolumeGroupAdapter(getContext(), getGroup().getRoutes()));
                 } else {
-                    mGroupExpandCollapseButton.setImageDrawable(expandGroupDrawable);
-                    mGroupExpandCollapseButton.setContentDescription(expandGroupDescription);
                     mVolumeGroupList.setVisibility(View.GONE);
                 }
                 updateLayoutHeight();
diff --git a/v7/mediarouter/src/android/support/v7/app/MediaRouteExpandCollapseButton.java b/v7/mediarouter/src/android/support/v7/app/MediaRouteExpandCollapseButton.java
new file mode 100644
index 0000000..6a68846
--- /dev/null
+++ b/v7/mediarouter/src/android/support/v7/app/MediaRouteExpandCollapseButton.java
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+
+package android.support.v7.app;
+
+import android.content.Context;
+import android.graphics.ColorFilter;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
+import android.graphics.drawable.AnimationDrawable;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.mediarouter.R;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageButton;
+
+/**
+ * Chevron/Caret button to expand/collapse group volume list with animation.
+ */
+class MediaRouteExpandCollapseButton extends ImageButton {
+    private final AnimationDrawable mExpandAnimationDrawable;
+    private final AnimationDrawable mCollapseAnimationDrawable;
+    private final String mExpandGroupDescription;
+    private final String mCollapseGroupDescription;
+    private boolean mIsGroupExpanded;
+    private OnClickListener mListener;
+
+    public MediaRouteExpandCollapseButton(Context context) {
+        this(context, null);
+    }
+
+    public MediaRouteExpandCollapseButton(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public MediaRouteExpandCollapseButton(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        mExpandAnimationDrawable = (AnimationDrawable) ContextCompat.getDrawable(
+                context, R.drawable.ic_expand);
+        mCollapseAnimationDrawable = (AnimationDrawable) ContextCompat.getDrawable(
+                context, R.drawable.ic_collapse);
+
+        ColorFilter filter = new PorterDuffColorFilter(
+                MediaRouterThemeHelper.getControllerColor(context), PorterDuff.Mode.SRC_IN);
+        mExpandAnimationDrawable.setColorFilter(filter);
+        mCollapseAnimationDrawable.setColorFilter(filter);
+
+        mExpandGroupDescription = context.getString(R.string.mr_controller_expand_group);
+        mCollapseGroupDescription = context.getString(R.string.mr_controller_collapse_group);
+
+        setImageDrawable(mExpandAnimationDrawable.getFrame(0));
+        setContentDescription(mExpandGroupDescription);
+
+        super.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mIsGroupExpanded = !mIsGroupExpanded;
+                if (mIsGroupExpanded) {
+                    setImageDrawable(mExpandAnimationDrawable);
+                    mExpandAnimationDrawable.start();
+                    setContentDescription(mCollapseGroupDescription);
+                } else {
+                    setImageDrawable(mCollapseAnimationDrawable);
+                    mCollapseAnimationDrawable.start();
+                    setContentDescription(mExpandGroupDescription);
+                }
+                if (mListener != null) {
+                    mListener.onClick(view);
+                }
+            }
+        });
+    }
+
+    @Override
+    public void setOnClickListener(OnClickListener listener) {
+        mListener = listener;
+    }
+}
diff --git a/v7/mediarouter/src/android/support/v7/app/MediaRouteVolumeSlider.java b/v7/mediarouter/src/android/support/v7/app/MediaRouteVolumeSlider.java
index 9e650fc..b583b13 100644
--- a/v7/mediarouter/src/android/support/v7/app/MediaRouteVolumeSlider.java
+++ b/v7/mediarouter/src/android/support/v7/app/MediaRouteVolumeSlider.java
@@ -18,7 +18,6 @@
 
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.graphics.Color;
 import android.graphics.ColorFilter;
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
@@ -48,7 +47,7 @@
         super(context, attrs, defStyleAttr);
         mThumb = ContextCompat.getDrawable(context, R.drawable.mr_seekbar_thumb);
         setThumb(mThumb);
-        int color = MediaRouterThemeHelper.getVolumeSliderColor(context);
+        int color = MediaRouterThemeHelper.getControllerColor(context);
         ColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN);
         getProgressDrawable().setColorFilter(colorFilter);
         mThumb.setColorFilter(colorFilter);
diff --git a/v7/mediarouter/src/android/support/v7/app/MediaRouterThemeHelper.java b/v7/mediarouter/src/android/support/v7/app/MediaRouterThemeHelper.java
index ee6a3da..aa0ac32 100644
--- a/v7/mediarouter/src/android/support/v7/app/MediaRouterThemeHelper.java
+++ b/v7/mediarouter/src/android/support/v7/app/MediaRouterThemeHelper.java
@@ -55,7 +55,7 @@
         return res != 0 ? context.getResources().getDrawable(res) : null;
     }
 
-    public static int getVolumeSliderColor(Context context) {
+    public static int getControllerColor(Context context) {
         return isPrimaryColorLight(context) ? Color.BLACK : Color.WHITE;
     }