Merge "Checking in API diffs for 25.4.0" into oc-support-26.0-dev
diff --git a/v7/mediarouter/res/drawable/mr_button_dark_static.xml b/v7/mediarouter/res/drawable/mr_button_dark_static.xml
new file mode 100644
index 0000000..20cb447
--- /dev/null
+++ b/v7/mediarouter/res/drawable/mr_button_dark_static.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="true"
+ android:drawable="@drawable/ic_mr_button_disconnected_dark" />
+ <item android:drawable="@drawable/ic_mr_button_disabled_dark" />
+</selector>
diff --git a/v7/mediarouter/res/drawable/mr_button_light_static.xml b/v7/mediarouter/res/drawable/mr_button_light_static.xml
new file mode 100644
index 0000000..9d805d1
--- /dev/null
+++ b/v7/mediarouter/res/drawable/mr_button_light_static.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_enabled="true"
+ android:drawable="@drawable/ic_mr_button_disconnected_light" />
+ <item android:drawable="@drawable/ic_mr_button_disabled_light" />
+</selector>
diff --git a/v7/mediarouter/res/values/attrs.xml b/v7/mediarouter/res/values/attrs.xml
index e9f20a5..abd5815 100644
--- a/v7/mediarouter/res/values/attrs.xml
+++ b/v7/mediarouter/res/values/attrs.xml
@@ -21,6 +21,10 @@
and non-checked / non-checkable indicates
that media is playing to the local device only. -->
<attr name="externalRouteEnabledDrawable" format="reference" />
+ <!-- This drawable is a static version of the above animation drawable.
+ In order to speed up inflation, the static drawable is loaded first and
+ the animation drawable will be loaded in a worker thread separately. -->
+ <attr name="externalRouteEnabledDrawableStatic" format="reference" />
<!-- Tint to apply to the media route button -->
<attr name="mediaRouteButtonTint" format="color" />
diff --git a/v7/mediarouter/res/values/styles.xml b/v7/mediarouter/res/values/styles.xml
index e8e00e7..2611804 100644
--- a/v7/mediarouter/res/values/styles.xml
+++ b/v7/mediarouter/res/values/styles.xml
@@ -17,11 +17,13 @@
<resources>
<style name="Widget.MediaRouter.MediaRouteButton"
parent="Widget.AppCompat.ActionButton">
+ <item name="externalRouteEnabledDrawableStatic">@drawable/mr_button_dark_static</item>
<item name="externalRouteEnabledDrawable">@drawable/mr_button_dark</item>
</style>
<style name="Widget.MediaRouter.Light.MediaRouteButton"
parent="Widget.AppCompat.Light.ActionButton">
+ <item name="externalRouteEnabledDrawableStatic">@drawable/mr_button_light_static</item>
<item name="externalRouteEnabledDrawable">@drawable/mr_button_light</item>
</style>
diff --git a/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java b/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java
index 22ab925..a7e8cb5 100644
--- a/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java
+++ b/v7/mediarouter/src/android/support/v7/app/MediaRouteButton.java
@@ -24,6 +24,7 @@
import android.graphics.Canvas;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
@@ -34,6 +35,7 @@
import android.support.v7.widget.TooltipCompat;
import android.util.AttributeSet;
import android.util.Log;
+import android.util.TypedValue;
import android.view.SoundEffectConstants;
import android.view.View;
@@ -127,7 +129,22 @@
R.styleable.MediaRouteButton, defStyleAttr, 0);
mButtonTint = a.getColorStateList(R.styleable.MediaRouteButton_mediaRouteButtonTint);
setRemoteIndicatorDrawable(a.getDrawable(
- R.styleable.MediaRouteButton_externalRouteEnabledDrawable));
+ R.styleable.MediaRouteButton_externalRouteEnabledDrawableStatic));
+ final TypedValue value = new TypedValue();
+ a.getValue(R.styleable.MediaRouteButton_externalRouteEnabledDrawable, value);
+ new AsyncTask<Void, Void, Drawable>() {
+ @Override
+ protected Drawable doInBackground(Void... params) {
+ return getContext().getResources().getDrawable(value.resourceId);
+ }
+
+ @Override
+ protected void onPostExecute(Drawable result) {
+ if (result != null) {
+ setRemoteIndicatorDrawable(result);
+ }
+ }
+ }.execute();
mMinWidth = a.getDimensionPixelSize(
R.styleable.MediaRouteButton_android_minWidth, 0);
mMinHeight = a.getDimensionPixelSize(