Loading packages/SystemUI/res/layout/media_output_dialog.xml +1 −23 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ android:id="@+id/header_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingEnd="16dp"/> android:paddingEnd="@dimen/media_output_dialog_header_icon_padding"/> <LinearLayout android:layout_width="match_parent" Loading Loading @@ -70,36 +70,14 @@ android:id="@+id/device_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start|center_vertical" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="12dp"/> <include layout="@layout/media_output_list_item" android:id="@+id/group_item_controller" android:visibility="gone"/> <View android:id="@+id/group_item_divider" android:layout_width="match_parent" android:layout_height="1dp" android:background="?android:attr/listDivider" android:visibility="gone"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/list_result" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:overScrollMode="never"/> <View android:id="@+id/list_bottom_padding" android:layout_width="match_parent" android:layout_height="12dp"/> </LinearLayout> <View Loading packages/SystemUI/res/values/dimens.xml +2 −1 Original line number Diff line number Diff line Loading @@ -1368,9 +1368,10 @@ <dimen name="config_rounded_mask_size_bottom">@*android:dimen/rounded_corner_radius_bottom</dimen> <!-- Output switcher panel related dimensions --> <dimen name="media_output_dialog_padding_top">11dp</dimen> <dimen name="media_output_dialog_list_margin">12dp</dimen> <dimen name="media_output_dialog_list_max_height">364dp</dimen> <dimen name="media_output_dialog_header_album_icon_size">52dp</dimen> <dimen name="media_output_dialog_header_back_icon_size">36dp</dimen> <dimen name="media_output_dialog_header_icon_padding">16dp</dimen> <dimen name="media_output_dialog_icon_corner_radius">16dp</dimen> </resources> packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +28 −27 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import java.util.List; public class MediaOutputAdapter extends MediaOutputBaseAdapter { private static final String TAG = "MediaOutputAdapter"; private static final int PAIR_NEW = 1; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); public MediaOutputAdapter(MediaOutputController controller) { super(controller); Loading @@ -58,11 +58,14 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { @Override public void onBindViewHolder(@NonNull MediaDeviceBaseViewHolder viewHolder, int position) { if (mController.isZeroMode() && position == (mController.getMediaDevices().size())) { viewHolder.onBind(PAIR_NEW); } else if (position < (mController.getMediaDevices().size())) { viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())).get(position)); } else { final int size = mController.getMediaDevices().size(); if (mController.isZeroMode() && position == size) { viewHolder.onBind(CUSTOMIZED_ITEM_PAIR_NEW, false /* topMargin */, true /* bottomMargin */); } else if (position < size) { viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())).get(position), position == 0 /* topMargin */, position == (size - 1) /* bottomMargin */); } else if (DEBUG) { Log.d(TAG, "Incorrect position: " + position); } } Loading @@ -83,7 +86,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } void onItemClick(int customizedItem) { if (customizedItem == PAIR_NEW) { if (customizedItem == CUSTOMIZED_ITEM_PAIR_NEW) { mController.launchBluetoothPairing(); } } Loading Loading @@ -112,51 +115,49 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } @Override void onBind(MediaDevice device) { super.onBind(device); void onBind(MediaDevice device, boolean topMargin, boolean bottomMargin) { super.onBind(device, topMargin, bottomMargin); if (mController.isTransferring()) { if (device.getState() == MediaDeviceState.STATE_CONNECTING && !mController.hasAdjustVolumeUserRestriction()) { setTwoLineLayout(device, true); mProgressBar.setVisibility(View.VISIBLE); mSeekBar.setVisibility(View.GONE); mSubTitleText.setVisibility(View.GONE); setTwoLineLayout(device, null /* title */, true /* bFocused */, false /* showSeekBar*/, true /* showProgressBar */, false /* showSubtitle */); } else { setSingleLineLayout(getItemTitle(device), false); setSingleLineLayout(getItemTitle(device), false /* bFocused */); } } else { // Set different layout for each device if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) { setTwoLineLayout(device, false); mSubTitleText.setVisibility(View.VISIBLE); mSeekBar.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE); setTwoLineLayout(device, null /* title */, false /* bFocused */, false /* showSeekBar*/, false /* showProgressBar */, true /* showSubtitle */); mSubTitleText.setText(R.string.media_output_dialog_connect_failed); mFrameLayout.setOnClickListener(v -> onItemClick(device)); } else if (!mController.hasAdjustVolumeUserRestriction() && isCurrentConnected(device)) { setTwoLineLayout(device, true); mSeekBar.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.GONE); mSubTitleText.setVisibility(View.GONE); setTwoLineLayout(device, null /* title */, true /* bFocused */, true /* showSeekBar*/, false /* showProgressBar */, false /* showSubtitle */); initSeekbar(device); } else { setSingleLineLayout(getItemTitle(device), false); setSingleLineLayout(getItemTitle(device), false /* bFocused */); mFrameLayout.setOnClickListener(v -> onItemClick(device)); } } } @Override void onBind(int customizedItem) { if (customizedItem == PAIR_NEW) { void onBind(int customizedItem, boolean topMargin, boolean bottomMargin) { super.onBind(customizedItem, topMargin, bottomMargin); if (customizedItem == CUSTOMIZED_ITEM_PAIR_NEW) { setSingleLineLayout(mContext.getText(R.string.media_output_dialog_pairing_new), false); false /* bFocused */); final Drawable d = mContext.getDrawable(R.drawable.ic_add); d.setColorFilter(new PorterDuffColorFilter( Utils.getColorAccentDefaultColor(mContext), PorterDuff.Mode.SRC_IN)); mTitleIcon.setImageDrawable(d); mFrameLayout.setOnClickListener(v -> onItemClick(PAIR_NEW)); mFrameLayout.setOnClickListener(v -> onItemClick(CUSTOMIZED_ITEM_PAIR_NEW)); } } } Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +32 −4 Original line number Diff line number Diff line Loading @@ -44,9 +44,12 @@ public abstract class MediaOutputBaseAdapter extends private static final String FONT_SELECTED_TITLE = "sans-serif-medium"; private static final String FONT_TITLE = "sans-serif"; static final int CUSTOMIZED_ITEM_PAIR_NEW = 1; final MediaOutputController mController; private boolean mIsDragging; private int mMargin; Context mContext; View mHolderView; Loading @@ -60,6 +63,8 @@ public abstract class MediaOutputBaseAdapter extends public MediaDeviceBaseViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { mContext = viewGroup.getContext(); mMargin = mContext.getResources().getDimensionPixelSize( R.dimen.media_output_dialog_list_margin); mHolderView = LayoutInflater.from(mContext).inflate(R.layout.media_output_list_item, viewGroup, false); Loading Loading @@ -106,12 +111,26 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar = view.requireViewById(R.id.volume_seekbar); } void onBind(MediaDevice device) { void onBind(MediaDevice device, boolean topMargin, boolean bottomMargin) { mTitleIcon.setImageIcon(mController.getDeviceIconCompat(device).toIcon(mContext)); setMargin(topMargin, bottomMargin); } void onBind(int customizedItem) { } void onBind(int customizedItem, boolean topMargin, boolean bottomMargin) { setMargin(topMargin, bottomMargin); } private void setMargin(boolean topMargin, boolean bottomMargin) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mFrameLayout .getLayoutParams(); if (topMargin) { params.topMargin = mMargin; } if (bottomMargin) { params.bottomMargin = mMargin; } mFrameLayout.setLayoutParams(params); } void setSingleLineLayout(CharSequence title, boolean bFocused) { mTitleText.setVisibility(View.VISIBLE); mTwoLineLayout.setVisibility(View.GONE); Loading @@ -123,10 +142,19 @@ public abstract class MediaOutputBaseAdapter extends } } void setTwoLineLayout(MediaDevice device, boolean bFocused) { void setTwoLineLayout(MediaDevice device, CharSequence title, boolean bFocused, boolean showSeekBar, boolean showProgressBar, boolean showSubtitle) { mTitleText.setVisibility(View.GONE); mTwoLineLayout.setVisibility(View.VISIBLE); mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE); mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE); mSubTitleText.setVisibility(showSubtitle ? View.VISIBLE : View.GONE); if (device == null) { mTwoLineTitleText.setText(title); } else { mTwoLineTitleText.setText(getItemTitle(device)); } if (bFocused) { mTwoLineTitleText.setTypeface(Typeface.create(FONT_SELECTED_TITLE, Typeface.NORMAL)); Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +7 −14 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.view.Window; import android.view.WindowInsets; import android.view.WindowManager; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; Loading Loading @@ -69,12 +68,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements private LinearLayout mDeviceListLayout; private Button mDoneButton; private Button mStopButton; private View mListBottomPadding; private int mListMaxHeight; MediaOutputBaseAdapter mAdapter; FrameLayout mGroupItemController; View mGroupDivider; private final ViewTreeObserver.OnGlobalLayoutListener mDeviceListLayoutListener = () -> { // Set max height for list Loading Loading @@ -114,12 +110,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mHeaderSubtitle = mDialogView.requireViewById(R.id.header_subtitle); mHeaderIcon = mDialogView.requireViewById(R.id.header_icon); mDevicesRecyclerView = mDialogView.requireViewById(R.id.list_result); mGroupItemController = mDialogView.requireViewById(R.id.group_item_controller); mGroupDivider = mDialogView.requireViewById(R.id.group_item_divider); mDeviceListLayout = mDialogView.requireViewById(R.id.device_list); mDoneButton = mDialogView.requireViewById(R.id.done); mStopButton = mDialogView.requireViewById(R.id.stop); mListBottomPadding = mDialogView.requireViewById(R.id.list_bottom_padding); mDeviceListLayout.getViewTreeObserver().addOnGlobalLayoutListener( mDeviceListLayoutListener); Loading Loading @@ -162,7 +155,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements } if (mHeaderIcon.getVisibility() == View.VISIBLE) { final int size = getHeaderIconSize(); mHeaderIcon.setLayoutParams(new LinearLayout.LayoutParams(size, size)); final int padding = mContext.getResources().getDimensionPixelSize( R.dimen.media_output_dialog_header_icon_padding); mHeaderIcon.setLayoutParams(new LinearLayout.LayoutParams(size + padding, size)); } // Update title and subtitle mHeaderTitle.setText(getHeaderText()); Loading @@ -178,12 +173,8 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements if (!mAdapter.isDragging()) { mAdapter.notifyDataSetChanged(); } // Add extra padding when device amount is less than 6 if (mMediaOutputController.getMediaDevices().size() < 6) { mListBottomPadding.setVisibility(View.VISIBLE); } else { mListBottomPadding.setVisibility(View.GONE); } // Show when remote media session is available mStopButton.setVisibility(getStopButtonVisibility()); } abstract int getHeaderIconRes(); Loading @@ -196,6 +187,8 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements abstract CharSequence getHeaderSubtitle(); abstract int getStopButtonVisibility(); @Override public void onMediaChanged() { mMainThreadHandler.post(() -> refresh()); Loading Loading
packages/SystemUI/res/layout/media_output_dialog.xml +1 −23 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ android:id="@+id/header_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingEnd="16dp"/> android:paddingEnd="@dimen/media_output_dialog_header_icon_padding"/> <LinearLayout android:layout_width="match_parent" Loading Loading @@ -70,36 +70,14 @@ android:id="@+id/device_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start|center_vertical" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="12dp"/> <include layout="@layout/media_output_list_item" android:id="@+id/group_item_controller" android:visibility="gone"/> <View android:id="@+id/group_item_divider" android:layout_width="match_parent" android:layout_height="1dp" android:background="?android:attr/listDivider" android:visibility="gone"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/list_result" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:overScrollMode="never"/> <View android:id="@+id/list_bottom_padding" android:layout_width="match_parent" android:layout_height="12dp"/> </LinearLayout> <View Loading
packages/SystemUI/res/values/dimens.xml +2 −1 Original line number Diff line number Diff line Loading @@ -1368,9 +1368,10 @@ <dimen name="config_rounded_mask_size_bottom">@*android:dimen/rounded_corner_radius_bottom</dimen> <!-- Output switcher panel related dimensions --> <dimen name="media_output_dialog_padding_top">11dp</dimen> <dimen name="media_output_dialog_list_margin">12dp</dimen> <dimen name="media_output_dialog_list_max_height">364dp</dimen> <dimen name="media_output_dialog_header_album_icon_size">52dp</dimen> <dimen name="media_output_dialog_header_back_icon_size">36dp</dimen> <dimen name="media_output_dialog_header_icon_padding">16dp</dimen> <dimen name="media_output_dialog_icon_corner_radius">16dp</dimen> </resources>
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +28 −27 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import java.util.List; public class MediaOutputAdapter extends MediaOutputBaseAdapter { private static final String TAG = "MediaOutputAdapter"; private static final int PAIR_NEW = 1; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); public MediaOutputAdapter(MediaOutputController controller) { super(controller); Loading @@ -58,11 +58,14 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { @Override public void onBindViewHolder(@NonNull MediaDeviceBaseViewHolder viewHolder, int position) { if (mController.isZeroMode() && position == (mController.getMediaDevices().size())) { viewHolder.onBind(PAIR_NEW); } else if (position < (mController.getMediaDevices().size())) { viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())).get(position)); } else { final int size = mController.getMediaDevices().size(); if (mController.isZeroMode() && position == size) { viewHolder.onBind(CUSTOMIZED_ITEM_PAIR_NEW, false /* topMargin */, true /* bottomMargin */); } else if (position < size) { viewHolder.onBind(((List<MediaDevice>) (mController.getMediaDevices())).get(position), position == 0 /* topMargin */, position == (size - 1) /* bottomMargin */); } else if (DEBUG) { Log.d(TAG, "Incorrect position: " + position); } } Loading @@ -83,7 +86,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } void onItemClick(int customizedItem) { if (customizedItem == PAIR_NEW) { if (customizedItem == CUSTOMIZED_ITEM_PAIR_NEW) { mController.launchBluetoothPairing(); } } Loading Loading @@ -112,51 +115,49 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } @Override void onBind(MediaDevice device) { super.onBind(device); void onBind(MediaDevice device, boolean topMargin, boolean bottomMargin) { super.onBind(device, topMargin, bottomMargin); if (mController.isTransferring()) { if (device.getState() == MediaDeviceState.STATE_CONNECTING && !mController.hasAdjustVolumeUserRestriction()) { setTwoLineLayout(device, true); mProgressBar.setVisibility(View.VISIBLE); mSeekBar.setVisibility(View.GONE); mSubTitleText.setVisibility(View.GONE); setTwoLineLayout(device, null /* title */, true /* bFocused */, false /* showSeekBar*/, true /* showProgressBar */, false /* showSubtitle */); } else { setSingleLineLayout(getItemTitle(device), false); setSingleLineLayout(getItemTitle(device), false /* bFocused */); } } else { // Set different layout for each device if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) { setTwoLineLayout(device, false); mSubTitleText.setVisibility(View.VISIBLE); mSeekBar.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE); setTwoLineLayout(device, null /* title */, false /* bFocused */, false /* showSeekBar*/, false /* showProgressBar */, true /* showSubtitle */); mSubTitleText.setText(R.string.media_output_dialog_connect_failed); mFrameLayout.setOnClickListener(v -> onItemClick(device)); } else if (!mController.hasAdjustVolumeUserRestriction() && isCurrentConnected(device)) { setTwoLineLayout(device, true); mSeekBar.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.GONE); mSubTitleText.setVisibility(View.GONE); setTwoLineLayout(device, null /* title */, true /* bFocused */, true /* showSeekBar*/, false /* showProgressBar */, false /* showSubtitle */); initSeekbar(device); } else { setSingleLineLayout(getItemTitle(device), false); setSingleLineLayout(getItemTitle(device), false /* bFocused */); mFrameLayout.setOnClickListener(v -> onItemClick(device)); } } } @Override void onBind(int customizedItem) { if (customizedItem == PAIR_NEW) { void onBind(int customizedItem, boolean topMargin, boolean bottomMargin) { super.onBind(customizedItem, topMargin, bottomMargin); if (customizedItem == CUSTOMIZED_ITEM_PAIR_NEW) { setSingleLineLayout(mContext.getText(R.string.media_output_dialog_pairing_new), false); false /* bFocused */); final Drawable d = mContext.getDrawable(R.drawable.ic_add); d.setColorFilter(new PorterDuffColorFilter( Utils.getColorAccentDefaultColor(mContext), PorterDuff.Mode.SRC_IN)); mTitleIcon.setImageDrawable(d); mFrameLayout.setOnClickListener(v -> onItemClick(PAIR_NEW)); mFrameLayout.setOnClickListener(v -> onItemClick(CUSTOMIZED_ITEM_PAIR_NEW)); } } } Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +32 −4 Original line number Diff line number Diff line Loading @@ -44,9 +44,12 @@ public abstract class MediaOutputBaseAdapter extends private static final String FONT_SELECTED_TITLE = "sans-serif-medium"; private static final String FONT_TITLE = "sans-serif"; static final int CUSTOMIZED_ITEM_PAIR_NEW = 1; final MediaOutputController mController; private boolean mIsDragging; private int mMargin; Context mContext; View mHolderView; Loading @@ -60,6 +63,8 @@ public abstract class MediaOutputBaseAdapter extends public MediaDeviceBaseViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { mContext = viewGroup.getContext(); mMargin = mContext.getResources().getDimensionPixelSize( R.dimen.media_output_dialog_list_margin); mHolderView = LayoutInflater.from(mContext).inflate(R.layout.media_output_list_item, viewGroup, false); Loading Loading @@ -106,12 +111,26 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar = view.requireViewById(R.id.volume_seekbar); } void onBind(MediaDevice device) { void onBind(MediaDevice device, boolean topMargin, boolean bottomMargin) { mTitleIcon.setImageIcon(mController.getDeviceIconCompat(device).toIcon(mContext)); setMargin(topMargin, bottomMargin); } void onBind(int customizedItem) { } void onBind(int customizedItem, boolean topMargin, boolean bottomMargin) { setMargin(topMargin, bottomMargin); } private void setMargin(boolean topMargin, boolean bottomMargin) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mFrameLayout .getLayoutParams(); if (topMargin) { params.topMargin = mMargin; } if (bottomMargin) { params.bottomMargin = mMargin; } mFrameLayout.setLayoutParams(params); } void setSingleLineLayout(CharSequence title, boolean bFocused) { mTitleText.setVisibility(View.VISIBLE); mTwoLineLayout.setVisibility(View.GONE); Loading @@ -123,10 +142,19 @@ public abstract class MediaOutputBaseAdapter extends } } void setTwoLineLayout(MediaDevice device, boolean bFocused) { void setTwoLineLayout(MediaDevice device, CharSequence title, boolean bFocused, boolean showSeekBar, boolean showProgressBar, boolean showSubtitle) { mTitleText.setVisibility(View.GONE); mTwoLineLayout.setVisibility(View.VISIBLE); mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE); mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE); mSubTitleText.setVisibility(showSubtitle ? View.VISIBLE : View.GONE); if (device == null) { mTwoLineTitleText.setText(title); } else { mTwoLineTitleText.setText(getItemTitle(device)); } if (bFocused) { mTwoLineTitleText.setTypeface(Typeface.create(FONT_SELECTED_TITLE, Typeface.NORMAL)); Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +7 −14 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.view.Window; import android.view.WindowInsets; import android.view.WindowManager; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; Loading Loading @@ -69,12 +68,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements private LinearLayout mDeviceListLayout; private Button mDoneButton; private Button mStopButton; private View mListBottomPadding; private int mListMaxHeight; MediaOutputBaseAdapter mAdapter; FrameLayout mGroupItemController; View mGroupDivider; private final ViewTreeObserver.OnGlobalLayoutListener mDeviceListLayoutListener = () -> { // Set max height for list Loading Loading @@ -114,12 +110,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mHeaderSubtitle = mDialogView.requireViewById(R.id.header_subtitle); mHeaderIcon = mDialogView.requireViewById(R.id.header_icon); mDevicesRecyclerView = mDialogView.requireViewById(R.id.list_result); mGroupItemController = mDialogView.requireViewById(R.id.group_item_controller); mGroupDivider = mDialogView.requireViewById(R.id.group_item_divider); mDeviceListLayout = mDialogView.requireViewById(R.id.device_list); mDoneButton = mDialogView.requireViewById(R.id.done); mStopButton = mDialogView.requireViewById(R.id.stop); mListBottomPadding = mDialogView.requireViewById(R.id.list_bottom_padding); mDeviceListLayout.getViewTreeObserver().addOnGlobalLayoutListener( mDeviceListLayoutListener); Loading Loading @@ -162,7 +155,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements } if (mHeaderIcon.getVisibility() == View.VISIBLE) { final int size = getHeaderIconSize(); mHeaderIcon.setLayoutParams(new LinearLayout.LayoutParams(size, size)); final int padding = mContext.getResources().getDimensionPixelSize( R.dimen.media_output_dialog_header_icon_padding); mHeaderIcon.setLayoutParams(new LinearLayout.LayoutParams(size + padding, size)); } // Update title and subtitle mHeaderTitle.setText(getHeaderText()); Loading @@ -178,12 +173,8 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements if (!mAdapter.isDragging()) { mAdapter.notifyDataSetChanged(); } // Add extra padding when device amount is less than 6 if (mMediaOutputController.getMediaDevices().size() < 6) { mListBottomPadding.setVisibility(View.VISIBLE); } else { mListBottomPadding.setVisibility(View.GONE); } // Show when remote media session is available mStopButton.setVisibility(getStopButtonVisibility()); } abstract int getHeaderIconRes(); Loading @@ -196,6 +187,8 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements abstract CharSequence getHeaderSubtitle(); abstract int getStopButtonVisibility(); @Override public void onMediaChanged() { mMainThreadHandler.post(() -> refresh()); Loading