Loading packages/MediaComponents/res/values/themes.xml +6 −6 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ <resources> <style name="Theme.MediaRouter" parent="ThemeOverlay.AppCompat.Dark"> <item name="windowNoTitle">true</item> <style name="Theme.MediaRouter" parent="android:Theme.Material"> <item name="android:windowNoTitle">true</item> <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.MediaRouteButton</item> <item name="mediaRouteCloseDrawable">@drawable/mr_dialog_close_dark</item> Loading @@ -37,8 +37,8 @@ <item name="mediaRouteControlPanelThemeOverlay">@style/ThemeOverlay.MediaRouter.Light</item> </style> <style name="Theme.MediaRouter.Light" parent="ThemeOverlay.AppCompat.Light"> <item name="windowNoTitle">true</item> <style name="Theme.MediaRouter.Light" parent="android:Theme.Material.Light"> <item name="android:windowNoTitle">true</item> <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.Light.MediaRouteButton</item> <item name="mediaRouteCloseDrawable">@drawable/mr_dialog_close_light</item> Loading @@ -58,14 +58,14 @@ <item name="mediaRouteControlPanelThemeOverlay">@style/ThemeOverlay.MediaRouter.Dark</item> </style> <style name="ThemeOverlay.MediaRouter.Dark" parent="ThemeOverlay.AppCompat.Dark"> <style name="ThemeOverlay.MediaRouter.Dark" parent="android:Theme.Material"> <item name="mediaRoutePlayDrawable">@drawable/mr_media_play_dark</item> <item name="mediaRoutePauseDrawable">@drawable/mr_media_pause_dark</item> <item name="mediaRouteStopDrawable">@drawable/mr_media_stop_dark</item> <item name="mediaRouteAudioTrackDrawable">@drawable/mr_vol_type_audiotrack_dark</item> </style> <style name="ThemeOverlay.MediaRouter.Light" parent="ThemeOverlay.AppCompat.Light"> <style name="ThemeOverlay.MediaRouter.Light" parent="android:Theme.Material.Light"> <item name="mediaRoutePlayDrawable">@drawable/mr_media_play_light</item> <item name="mediaRoutePauseDrawable">@drawable/mr_media_pause_light</item> <item name="mediaRouteStopDrawable">@drawable/mr_media_stop_light</item> Loading packages/MediaComponents/src/com/android/media/update/ApiHelper.java +24 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.media.update; import android.annotation.Nullable; import android.content.Context; import android.content.res.Resources; import android.content.res.Resources.Theme; Loading @@ -24,6 +25,7 @@ import android.util.AttributeSet; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.support.mediarouter.app.MediaRouteButton; Loading Loading @@ -51,13 +53,23 @@ public class ApiHelper { return sInstance.mLibResources; } public static Resources.Theme getLibTheme() { public static Theme getLibTheme() { return sInstance.mLibTheme; } public static Theme getLibTheme(int themeId) { Theme theme = sInstance.mLibResources.newTheme(); theme.applyStyle(themeId, true); return theme; } public static LayoutInflater getLayoutInflater(Context context) { return getLayoutInflater(context, getLibTheme()); } public static LayoutInflater getLayoutInflater(Context context, Theme theme) { LayoutInflater layoutInflater = LayoutInflater.from(context).cloneInContext( new ContextThemeWrapper(context, getLibTheme())); new ContextThemeWrapper(context, theme)); layoutInflater.setFactory2(new LayoutInflater.Factory2() { @Override public View onCreateView( Loading @@ -77,8 +89,17 @@ public class ApiHelper { } public static View inflateLibLayout(Context context, int libResId) { return inflateLibLayout(context, getLibTheme(), libResId, null, false); } public static View inflateLibLayout(Context context, Theme theme, int libResId) { return inflateLibLayout(context, theme, libResId, null, false); } public static View inflateLibLayout(Context context, Theme theme, int libResId, @Nullable ViewGroup root, boolean attachToRoot) { try (XmlResourceParser parser = getLibResources().getLayout(libResId)) { return getLayoutInflater(context).inflate(parser, null); return getLayoutInflater(context, theme).inflate(parser, root, attachToRoot); } } } packages/MediaComponents/src/com/android/support/mediarouter/app/MediaRouteButton.java +2 −10 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.support.mediarouter.app; import android.annotation.NonNull; import android.app.Activity; import android.app.FragmentManager; import android.content.Context; import android.content.ContextWrapper; import android.content.res.ColorStateList; Loading @@ -27,8 +28,6 @@ import android.graphics.Canvas; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.widget.TooltipCompat; import android.util.AttributeSet; Loading Loading @@ -259,7 +258,7 @@ public class MediaRouteButton extends View { return false; } final FragmentManager fm = getFragmentManager(); final FragmentManager fm = getActivity().getFragmentManager(); if (fm == null) { throw new IllegalStateException("The activity must be a subclass of FragmentActivity"); } Loading @@ -286,13 +285,6 @@ public class MediaRouteButton extends View { return true; } private FragmentManager getFragmentManager() { Activity activity = getActivity(); if (activity instanceof FragmentActivity) { return ((FragmentActivity)activity).getSupportFragmentManager(); } return null; } private Activity getActivity() { // Gross way of unwrapping the Activity so we can get the FragmentManager Loading packages/MediaComponents/src/com/android/support/mediarouter/app/MediaRouteChooserDialog.java +26 −13 Original line number Diff line number Diff line Loading @@ -20,7 +20,9 @@ import static com.android.support.mediarouter.media.MediaRouter.RouteInfo.CONNEC import static com.android.support.mediarouter.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING; import android.annotation.NonNull; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.net.Uri; Loading @@ -31,6 +33,7 @@ import android.os.SystemClock; import android.support.v7.app.AppCompatDialog; import android.text.TextUtils; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; Loading @@ -41,6 +44,7 @@ import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.android.media.update.ApiHelper; import com.android.media.update.R; import com.android.support.mediarouter.media.MediaRouteSelector; import com.android.support.mediarouter.media.MediaRouter; Loading @@ -61,7 +65,7 @@ import java.util.List; * @see MediaRouteButton * @see MediaRouteActionProvider */ public class MediaRouteChooserDialog extends AppCompatDialog { public class MediaRouteChooserDialog extends Dialog { static final String TAG = "MediaRouteChooserDialog"; // Do not update the route list immediately to avoid unnatural dialog change. Loading Loading @@ -94,8 +98,9 @@ public class MediaRouteChooserDialog extends AppCompatDialog { } public MediaRouteChooserDialog(Context context, int theme) { super(context = MediaRouterThemeHelper.createThemedDialogContext(context, theme, false), MediaRouterThemeHelper.createThemedDialogStyle(context)); super(new ContextThemeWrapper(context, ApiHelper.getLibTheme(MediaRouterThemeHelper.getRouterThemeId(context))), theme == 0 ? android.R.style.Animation : theme); context = getContext(); mRouter = MediaRouter.getInstance(context); Loading Loading @@ -182,7 +187,9 @@ public class MediaRouteChooserDialog extends AppCompatDialog { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mr_chooser_dialog); setContentView(ApiHelper.inflateLibLayout(getContext(), ApiHelper.getLibTheme(MediaRouterThemeHelper.getRouterThemeId(getContext())), R.layout.mr_chooser_dialog)); mRoutes = new ArrayList<>(); mAdapter = new RouteAdapter(getContext(), mRoutes); Loading @@ -199,7 +206,7 @@ public class MediaRouteChooserDialog extends AppCompatDialog { * Sets the width of the dialog. Also called when configuration changes. */ void updateLayout() { getWindow().setLayout(MediaRouteDialogHelper.getDialogWidth(getContext()), getWindow().setLayout(MediaRouteDialogHelper.getDialogWidth(), ViewGroup.LayoutParams.WRAP_CONTENT); } Loading Loading @@ -248,7 +255,6 @@ public class MediaRouteChooserDialog extends AppCompatDialog { private final class RouteAdapter extends ArrayAdapter<MediaRouter.RouteInfo> implements ListView.OnItemClickListener { private final LayoutInflater mInflater; private final Drawable mDefaultIcon; private final Drawable mTvIcon; private final Drawable mSpeakerIcon; Loading @@ -256,12 +262,16 @@ public class MediaRouteChooserDialog extends AppCompatDialog { public RouteAdapter(Context context, List<MediaRouter.RouteInfo> routes) { super(context, 0, routes); mInflater = LayoutInflater.from(context); TypedArray styledAttributes = getContext().obtainStyledAttributes(new int[] { TypedArray styledAttributes = ApiHelper.getLibTheme( MediaRouterThemeHelper.getRouterThemeId(context)).obtainStyledAttributes( new int[] { R.attr.mediaRouteDefaultIconDrawable, R.attr.mediaRouteTvIconDrawable, R.attr.mediaRouteSpeakerIconDrawable, R.attr.mediaRouteSpeakerGroupIconDrawable}); R.attr.mediaRouteSpeakerGroupIconDrawable }); mDefaultIcon = styledAttributes.getDrawable(0); mTvIcon = styledAttributes.getDrawable(1); mSpeakerIcon = styledAttributes.getDrawable(2); Loading @@ -283,7 +293,10 @@ public class MediaRouteChooserDialog extends AppCompatDialog { public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = mInflater.inflate(R.layout.mr_chooser_list_item, parent, false); view = ApiHelper.inflateLibLayout(getContext(), ApiHelper.getLibTheme( MediaRouterThemeHelper.getRouterThemeId(getContext())), R.layout.mr_chooser_list_item, parent, false); } MediaRouter.RouteInfo route = getItem(position); Loading packages/MediaComponents/src/com/android/support/mediarouter/app/MediaRouteChooserDialogFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,10 @@ package com.android.support.mediarouter.app; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.DialogFragment; import com.android.support.mediarouter.media.MediaRouteSelector; Loading Loading
packages/MediaComponents/res/values/themes.xml +6 −6 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ <resources> <style name="Theme.MediaRouter" parent="ThemeOverlay.AppCompat.Dark"> <item name="windowNoTitle">true</item> <style name="Theme.MediaRouter" parent="android:Theme.Material"> <item name="android:windowNoTitle">true</item> <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.MediaRouteButton</item> <item name="mediaRouteCloseDrawable">@drawable/mr_dialog_close_dark</item> Loading @@ -37,8 +37,8 @@ <item name="mediaRouteControlPanelThemeOverlay">@style/ThemeOverlay.MediaRouter.Light</item> </style> <style name="Theme.MediaRouter.Light" parent="ThemeOverlay.AppCompat.Light"> <item name="windowNoTitle">true</item> <style name="Theme.MediaRouter.Light" parent="android:Theme.Material.Light"> <item name="android:windowNoTitle">true</item> <item name="mediaRouteButtonStyle">@style/Widget.MediaRouter.Light.MediaRouteButton</item> <item name="mediaRouteCloseDrawable">@drawable/mr_dialog_close_light</item> Loading @@ -58,14 +58,14 @@ <item name="mediaRouteControlPanelThemeOverlay">@style/ThemeOverlay.MediaRouter.Dark</item> </style> <style name="ThemeOverlay.MediaRouter.Dark" parent="ThemeOverlay.AppCompat.Dark"> <style name="ThemeOverlay.MediaRouter.Dark" parent="android:Theme.Material"> <item name="mediaRoutePlayDrawable">@drawable/mr_media_play_dark</item> <item name="mediaRoutePauseDrawable">@drawable/mr_media_pause_dark</item> <item name="mediaRouteStopDrawable">@drawable/mr_media_stop_dark</item> <item name="mediaRouteAudioTrackDrawable">@drawable/mr_vol_type_audiotrack_dark</item> </style> <style name="ThemeOverlay.MediaRouter.Light" parent="ThemeOverlay.AppCompat.Light"> <style name="ThemeOverlay.MediaRouter.Light" parent="android:Theme.Material.Light"> <item name="mediaRoutePlayDrawable">@drawable/mr_media_play_light</item> <item name="mediaRoutePauseDrawable">@drawable/mr_media_pause_light</item> <item name="mediaRouteStopDrawable">@drawable/mr_media_stop_light</item> Loading
packages/MediaComponents/src/com/android/media/update/ApiHelper.java +24 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.media.update; import android.annotation.Nullable; import android.content.Context; import android.content.res.Resources; import android.content.res.Resources.Theme; Loading @@ -24,6 +25,7 @@ import android.util.AttributeSet; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.android.support.mediarouter.app.MediaRouteButton; Loading Loading @@ -51,13 +53,23 @@ public class ApiHelper { return sInstance.mLibResources; } public static Resources.Theme getLibTheme() { public static Theme getLibTheme() { return sInstance.mLibTheme; } public static Theme getLibTheme(int themeId) { Theme theme = sInstance.mLibResources.newTheme(); theme.applyStyle(themeId, true); return theme; } public static LayoutInflater getLayoutInflater(Context context) { return getLayoutInflater(context, getLibTheme()); } public static LayoutInflater getLayoutInflater(Context context, Theme theme) { LayoutInflater layoutInflater = LayoutInflater.from(context).cloneInContext( new ContextThemeWrapper(context, getLibTheme())); new ContextThemeWrapper(context, theme)); layoutInflater.setFactory2(new LayoutInflater.Factory2() { @Override public View onCreateView( Loading @@ -77,8 +89,17 @@ public class ApiHelper { } public static View inflateLibLayout(Context context, int libResId) { return inflateLibLayout(context, getLibTheme(), libResId, null, false); } public static View inflateLibLayout(Context context, Theme theme, int libResId) { return inflateLibLayout(context, theme, libResId, null, false); } public static View inflateLibLayout(Context context, Theme theme, int libResId, @Nullable ViewGroup root, boolean attachToRoot) { try (XmlResourceParser parser = getLibResources().getLayout(libResId)) { return getLayoutInflater(context).inflate(parser, null); return getLayoutInflater(context, theme).inflate(parser, root, attachToRoot); } } }
packages/MediaComponents/src/com/android/support/mediarouter/app/MediaRouteButton.java +2 −10 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.support.mediarouter.app; import android.annotation.NonNull; import android.app.Activity; import android.app.FragmentManager; import android.content.Context; import android.content.ContextWrapper; import android.content.res.ColorStateList; Loading @@ -27,8 +28,6 @@ import android.graphics.Canvas; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.widget.TooltipCompat; import android.util.AttributeSet; Loading Loading @@ -259,7 +258,7 @@ public class MediaRouteButton extends View { return false; } final FragmentManager fm = getFragmentManager(); final FragmentManager fm = getActivity().getFragmentManager(); if (fm == null) { throw new IllegalStateException("The activity must be a subclass of FragmentActivity"); } Loading @@ -286,13 +285,6 @@ public class MediaRouteButton extends View { return true; } private FragmentManager getFragmentManager() { Activity activity = getActivity(); if (activity instanceof FragmentActivity) { return ((FragmentActivity)activity).getSupportFragmentManager(); } return null; } private Activity getActivity() { // Gross way of unwrapping the Activity so we can get the FragmentManager Loading
packages/MediaComponents/src/com/android/support/mediarouter/app/MediaRouteChooserDialog.java +26 −13 Original line number Diff line number Diff line Loading @@ -20,7 +20,9 @@ import static com.android.support.mediarouter.media.MediaRouter.RouteInfo.CONNEC import static com.android.support.mediarouter.media.MediaRouter.RouteInfo.CONNECTION_STATE_CONNECTING; import android.annotation.NonNull; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.net.Uri; Loading @@ -31,6 +33,7 @@ import android.os.SystemClock; import android.support.v7.app.AppCompatDialog; import android.text.TextUtils; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; Loading @@ -41,6 +44,7 @@ import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.android.media.update.ApiHelper; import com.android.media.update.R; import com.android.support.mediarouter.media.MediaRouteSelector; import com.android.support.mediarouter.media.MediaRouter; Loading @@ -61,7 +65,7 @@ import java.util.List; * @see MediaRouteButton * @see MediaRouteActionProvider */ public class MediaRouteChooserDialog extends AppCompatDialog { public class MediaRouteChooserDialog extends Dialog { static final String TAG = "MediaRouteChooserDialog"; // Do not update the route list immediately to avoid unnatural dialog change. Loading Loading @@ -94,8 +98,9 @@ public class MediaRouteChooserDialog extends AppCompatDialog { } public MediaRouteChooserDialog(Context context, int theme) { super(context = MediaRouterThemeHelper.createThemedDialogContext(context, theme, false), MediaRouterThemeHelper.createThemedDialogStyle(context)); super(new ContextThemeWrapper(context, ApiHelper.getLibTheme(MediaRouterThemeHelper.getRouterThemeId(context))), theme == 0 ? android.R.style.Animation : theme); context = getContext(); mRouter = MediaRouter.getInstance(context); Loading Loading @@ -182,7 +187,9 @@ public class MediaRouteChooserDialog extends AppCompatDialog { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mr_chooser_dialog); setContentView(ApiHelper.inflateLibLayout(getContext(), ApiHelper.getLibTheme(MediaRouterThemeHelper.getRouterThemeId(getContext())), R.layout.mr_chooser_dialog)); mRoutes = new ArrayList<>(); mAdapter = new RouteAdapter(getContext(), mRoutes); Loading @@ -199,7 +206,7 @@ public class MediaRouteChooserDialog extends AppCompatDialog { * Sets the width of the dialog. Also called when configuration changes. */ void updateLayout() { getWindow().setLayout(MediaRouteDialogHelper.getDialogWidth(getContext()), getWindow().setLayout(MediaRouteDialogHelper.getDialogWidth(), ViewGroup.LayoutParams.WRAP_CONTENT); } Loading Loading @@ -248,7 +255,6 @@ public class MediaRouteChooserDialog extends AppCompatDialog { private final class RouteAdapter extends ArrayAdapter<MediaRouter.RouteInfo> implements ListView.OnItemClickListener { private final LayoutInflater mInflater; private final Drawable mDefaultIcon; private final Drawable mTvIcon; private final Drawable mSpeakerIcon; Loading @@ -256,12 +262,16 @@ public class MediaRouteChooserDialog extends AppCompatDialog { public RouteAdapter(Context context, List<MediaRouter.RouteInfo> routes) { super(context, 0, routes); mInflater = LayoutInflater.from(context); TypedArray styledAttributes = getContext().obtainStyledAttributes(new int[] { TypedArray styledAttributes = ApiHelper.getLibTheme( MediaRouterThemeHelper.getRouterThemeId(context)).obtainStyledAttributes( new int[] { R.attr.mediaRouteDefaultIconDrawable, R.attr.mediaRouteTvIconDrawable, R.attr.mediaRouteSpeakerIconDrawable, R.attr.mediaRouteSpeakerGroupIconDrawable}); R.attr.mediaRouteSpeakerGroupIconDrawable }); mDefaultIcon = styledAttributes.getDrawable(0); mTvIcon = styledAttributes.getDrawable(1); mSpeakerIcon = styledAttributes.getDrawable(2); Loading @@ -283,7 +293,10 @@ public class MediaRouteChooserDialog extends AppCompatDialog { public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = mInflater.inflate(R.layout.mr_chooser_list_item, parent, false); view = ApiHelper.inflateLibLayout(getContext(), ApiHelper.getLibTheme( MediaRouterThemeHelper.getRouterThemeId(getContext())), R.layout.mr_chooser_list_item, parent, false); } MediaRouter.RouteInfo route = getItem(position); Loading
packages/MediaComponents/src/com/android/support/mediarouter/app/MediaRouteChooserDialogFragment.java +1 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,10 @@ package com.android.support.mediarouter.app; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.DialogFragment; import com.android.support.mediarouter.media.MediaRouteSelector; Loading