Merge "[Output Switcher] Adjusts color, size and margin"

This commit is contained in:
Shaowei Shen
2021-12-05 15:01:41 +00:00
committed by Android (Google) Code Review
15 changed files with 121 additions and 65 deletions

View File

@@ -13,17 +13,19 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:shape="rectangle">
<stroke
android:color="?androidprv:attr/colorAccentPrimaryVariant"
android:width="1dp"/>
<corners android:radius="20dp"/>
<padding
android:left="16dp"
android:right="16dp"
android:top="8dp"
android:bottom="8dp" />
<solid android:color="@android:color/transparent" />
</shape>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetBottom="6dp"
android:insetTop="6dp">
<shape android:shape="rectangle">
<stroke
android:color="@color/media_dialog_outlined_button"
android:width="1dp"/>
<corners android:radius="20dp"/>
<padding
android:left="16dp"
android:right="16dp"
android:top="8dp"
android:bottom="8dp"/>
<solid android:color="@android:color/transparent"/>
</shape>
</inset>

View File

@@ -13,17 +13,19 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:shape="rectangle">
<stroke
android:color="@android:color/transparent"
android:width="1dp"/>
<corners android:radius="20dp"/>
<padding
android:left="@dimen/media_output_dialog_button_padding_horizontal"
android:right="@dimen/media_output_dialog_button_padding_horizontal"
android:top="@dimen/media_output_dialog_button_padding_vertical"
android:bottom="@dimen/media_output_dialog_button_padding_vertical" />
<solid android:color="?androidprv:attr/colorAccentPrimaryVariant" />
</shape>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetBottom="6dp"
android:insetTop="6dp">
<shape android:shape="rectangle">
<stroke
android:color="@android:color/transparent"
android:width="1dp"/>
<corners android:radius="20dp"/>
<padding
android:left="@dimen/media_output_dialog_button_padding_horizontal"
android:right="@dimen/media_output_dialog_button_padding_horizontal"
android:top="@dimen/media_output_dialog_button_padding_vertical"
android:bottom="@dimen/media_output_dialog_button_padding_vertical"/>
<solid android:color="@color/media_dialog_solid_button_background"/>
</shape>
</inset>

View File

@@ -15,9 +15,8 @@
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:shape="rectangle">
<corners
android:radius="16dp"/>
<solid android:color="?androidprv:attr/colorAccentSecondary" />
<solid android:color="@color/media_dialog_item_background" />
</shape>

View File

@@ -15,9 +15,8 @@
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:shape="rectangle">
<corners
android:radius="50dp"/>
<solid android:color="?androidprv:attr/colorAccentSecondary" />
android:radius="28dp"/>
<solid android:color="@color/media_dialog_item_background" />
</shape>

View File

@@ -15,13 +15,12 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="?androidprv:attr/colorAccentPrimaryVariant"
android:fillColor="@color/media_dialog_item_status"
android:pathData="M9,16.2L4.8,12l-1.4,1.4L9,19 21,7l-1.4,-1.4L9,16.2z"/>
</vector>

View File

@@ -15,13 +15,12 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="?androidprv:attr/colorAccentPrimaryVariant"
android:fillColor="@color/media_dialog_inactive_item_main_content"
android:pathData="M11,7h2v2h-2zM11,11h2v6h-2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

View File

@@ -41,6 +41,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:background="@color/media_dialog_background"
android:orientation="vertical">
<ImageView
android:id="@+id/app_source_icon"
@@ -66,7 +67,7 @@
android:ellipsize="end"
android:maxLines="1"
android:textColor="?android:attr/textColorSecondary"
android:fontFamily="roboto-regular"
android:fontFamily="@*android:string/config_bodyFontFamily"
android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
@@ -75,7 +76,7 @@
android:id="@+id/device_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/media_dialog_background"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
@@ -93,13 +94,14 @@
android:layout_marginStart="16dp"
android:layout_marginBottom="24dp"
android:layout_marginEnd="16dp"
android:background="@color/media_dialog_background"
android:orientation="horizontal">
<Button
android:id="@+id/stop"
style="@style/MediaOutputRoundedOutlinedButton"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_height="wrap_content"
android:minWidth="0dp"
android:text="@string/keyboard_key_media_stop"
android:visibility="gone"/>
@@ -113,7 +115,7 @@
android:id="@+id/done"
style="@style/MediaOutputRoundedButton"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_height="wrap_content"
android:minWidth="0dp"
android:text="@string/inline_done_button"/>
</LinearLayout>

View File

@@ -17,7 +17,6 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:id="@+id/device_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -65,7 +64,7 @@
android:layout_marginStart="56dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?androidprv:attr/colorAccentPrimaryVariant"
android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
android:textSize="16sp"/>
<RelativeLayout
@@ -81,7 +80,8 @@
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?androidprv:attr/colorAccentPrimaryVariant"
android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
android:textColor="@color/media_dialog_inactive_item_main_content"
android:textSize="16sp"/>
<TextView
android:id="@+id/subtitle"
@@ -92,9 +92,9 @@
android:layout_alignParentBottom="true"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?androidprv:attr/colorAccentPrimaryVariant"
android:textColor="@color/media_dialog_inactive_item_main_content"
android:textSize="14sp"
android:fontFamily="roboto-regular"
android:fontFamily="@*android:string/config_bodyFontFamily"
android:visibility="gone"/>
<ImageView
android:id="@+id/add_icon"

View File

@@ -65,6 +65,17 @@
<!-- Media -->
<color name="media_divider">#85ffffff</color>
<!-- media output dialog-->
<color name="media_dialog_background">@android:color/system_neutral1_900</color>
<color name="media_dialog_solid_button_background">@android:color/system_accent1_100</color>
<color name="media_dialog_solid_button_text">@android:color/system_accent2_800</color>
<color name="media_dialog_outlined_button">@android:color/system_accent1_100</color>
<color name="media_dialog_outlined_button_text">@android:color/system_neutral1_50</color>
<color name="media_dialog_active_item_main_content">@android:color/system_accent2_800</color>
<color name="media_dialog_inactive_item_main_content">@android:color/system_accent1_100</color>
<color name="media_dialog_item_status">@android:color/system_accent1_100</color>
<color name="media_dialog_item_background">@android:color/system_neutral2_800</color>
<!-- Biometric dialog colors -->
<color name="biometric_dialog_gray">#ffcccccc</color>
<color name="biometric_dialog_accent">@android:color/system_accent1_300</color>

View File

@@ -16,8 +16,7 @@
* limitations under the License.
*/
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<drawable name="notification_number_text_color">#ffffffff</drawable>
<drawable name="system_bar_background">@color/system_bar_background_opaque</drawable>
<color name="system_bar_background_opaque">#ff000000</color>
@@ -173,6 +172,17 @@
<!-- media -->
<color name="media_seamless_border">?android:attr/colorAccent</color>
<!-- media output dialog-->
<color name="media_dialog_background" android:lstar="98">@android:color/system_neutral1_100</color>
<color name="media_dialog_solid_button_background">@android:color/system_accent1_600</color>
<color name="media_dialog_solid_button_text">@android:color/system_neutral1_50</color>
<color name="media_dialog_outlined_button">@android:color/system_accent1_600</color>
<color name="media_dialog_outlined_button_text">@android:color/system_neutral1_900</color>
<color name="media_dialog_active_item_main_content">@android:color/system_accent1_900</color>
<color name="media_dialog_inactive_item_main_content">@android:color/system_accent1_600</color>
<color name="media_dialog_item_status">@android:color/system_accent1_900</color>
<color name="media_dialog_item_background">@android:color/system_accent2_50</color>
<!-- controls -->
<color name="control_primary_text">#E6FFFFFF</color>
<color name="control_secondary_text">#99FFFFFF</color>

View File

@@ -450,14 +450,27 @@
<item name="android:background">@drawable/btn_borderless_rect</item>
</style>
<style name="Theme.SystemUI.Dialog.Media" parent="Theme.SystemUI.Dialog">
<item name="android:colorBackground">@color/media_dialog_background</item>
</style>
<style name="MediaOutputRoundedOutlinedButton" parent="@android:style/Widget.Material.Button">
<item name="android:background">@drawable/media_output_dialog_button_background</item>
<item name="android:textColor">@color/media_dialog_outlined_button_text</item>
<item name="android:textSize">14sp</item>
<item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
</style>
<style name="MediaOutputRoundedButton" parent="@android:style/Widget.Material.Button">
<item name="android:background">@drawable/media_output_dialog_solid_button_background</item>
<item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
<item name="android:textColor">@color/media_dialog_solid_button_text</item>
<item name="android:textSize">14sp</item>
<item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
</style>
<style name="MediaOutputItemInactiveTitle">
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/media_dialog_inactive_item_main_content</item>
</style>
<style name="TunerSettings" parent="@android:style/Theme.DeviceDefault.Settings">

View File

@@ -113,6 +113,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
}
mCheckBox.setVisibility(View.GONE);
mStatusIcon.setVisibility(View.GONE);
mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_inactive_item_main_content));
if (currentlyConnected && mController.isActiveRemoteDevice(device)
&& mController.getSelectableMediaDevice().size() > 0) {
// Init active device layout
@@ -147,6 +149,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
} else {
// Set different layout for each device
if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) {
mTitleText.setAlpha(DEVICE_CONNECTED_ALPHA);
mTitleIcon.setAlpha(DEVICE_CONNECTED_ALPHA);
mStatusIcon.setImageDrawable(
mContext.getDrawable(R.drawable.media_output_status_failed));
setTwoLineLayout(device, false /* bFocused */,
@@ -157,6 +161,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
} else if (!mController.hasAdjustVolumeUserRestriction() && currentlyConnected) {
mStatusIcon.setImageDrawable(
mContext.getDrawable(R.drawable.media_output_status_check));
mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_active_item_main_content));
setSingleLineLayout(getItemTitle(device), true /* bFocused */,
true /* showSeekBar */,
false /* showProgressBar */, true /* showStatus */);
@@ -172,6 +178,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
@Override
void onBind(int customizedItem, boolean topMargin, boolean bottomMargin) {
if (customizedItem == CUSTOMIZED_ITEM_PAIR_NEW) {
mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_inactive_item_main_content));
mCheckBox.setVisibility(View.GONE);
mAddIcon.setVisibility(View.GONE);
setSingleLineLayout(mContext.getText(R.string.media_output_dialog_pairing_new),
@@ -182,6 +190,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
mTitleIcon.setImageDrawable(d);
mContainerLayout.setOnClickListener(v -> onItemClick(CUSTOMIZED_ITEM_PAIR_NEW));
} else if (customizedItem == CUSTOMIZED_ITEM_DYNAMIC_GROUP) {
mTitleText.setTextColor(Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_active_item_main_content));
mConnectedItem = mContainerLayout;
mCheckBox.setVisibility(View.GONE);
if (mController.getSelectableMediaDevice().size() > 0) {

View File

@@ -19,7 +19,6 @@ package com.android.systemui.media.dialog;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Typeface;
@@ -41,6 +40,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settingslib.Utils;
import com.android.settingslib.media.MediaDevice;
import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.R;
@@ -165,7 +165,7 @@ public abstract class MediaOutputBaseAdapter extends
boolean showProgressBar, boolean showStatus) {
mTwoLineLayout.setVisibility(View.GONE);
final Drawable backgroundDrawable =
showSeekBar
showSeekBar || showProgressBar
? mContext.getDrawable(R.drawable.media_output_item_background_active)
.mutate() : mContext.getDrawable(
R.drawable.media_output_item_background)
@@ -177,15 +177,6 @@ public abstract class MediaOutputBaseAdapter extends
mStatusIcon.setVisibility(showStatus ? View.VISIBLE : View.GONE);
mTitleText.setText(title);
mTitleText.setVisibility(View.VISIBLE);
mTitleText.setTranslationY(0);
if (bFocused) {
mTitleText.setTypeface(Typeface.create(mContext.getString(
com.android.internal.R.string.config_headlineFontFamilyMedium),
Typeface.NORMAL));
} else {
mTitleText.setTypeface(Typeface.create(mContext.getString(
com.android.internal.R.string.config_headlineFontFamily), Typeface.NORMAL));
}
}
void setTwoLineLayout(MediaDevice device, boolean bFocused, boolean showSeekBar,
@@ -359,10 +350,10 @@ public abstract class MediaOutputBaseAdapter extends
Drawable getSpeakerDrawable() {
final Drawable drawable = mContext.getDrawable(R.drawable.ic_speaker_group_black_24dp)
.mutate();
final ColorStateList list = mContext.getResources().getColorStateList(
R.color.advanced_icon_color, mContext.getTheme());
drawable.setColorFilter(new PorterDuffColorFilter(list.getDefaultColor(),
PorterDuff.Mode.SRC_IN));
drawable.setColorFilter(
new PorterDuffColorFilter(Utils.getColorStateListDefaultColor(mContext,
R.color.media_dialog_active_item_main_content),
PorterDuff.Mode.SRC_IN));
return drawable;
}

View File

@@ -84,7 +84,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
};
public MediaOutputBaseDialog(Context context, MediaOutputController mediaOutputController) {
super(context);
super(context, R.style.Theme_SystemUI_Dialog_Media);
mContext = context;
mMediaOutputController = mediaOutputController;
mLayoutManager = new LinearLayoutManager(mContext);

View File

@@ -20,7 +20,11 @@ import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.media.MediaMetadata;
@@ -247,9 +251,24 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback {
// Use default Bluetooth device icon to handle getIcon() is null case.
drawable = mContext.getDrawable(com.android.internal.R.drawable.ic_bt_headphones_a2dp);
}
if (!(drawable instanceof BitmapDrawable)) {
setColorFilter(drawable,
mLocalMediaManager.getCurrentConnectedDevice().getId().equals(device.getId()));
}
return BluetoothUtils.createIconWithDrawable(drawable);
}
void setColorFilter(Drawable drawable, boolean isConnected) {
final ColorStateList list =
mContext.getResources().getColorStateList(
!hasAdjustVolumeUserRestriction() && isConnected && !isTransferring()
? R.color.media_dialog_active_item_main_content
: R.color.media_dialog_inactive_item_main_content,
mContext.getTheme());
drawable.setColorFilter(new PorterDuffColorFilter(list.getDefaultColor(),
PorterDuff.Mode.SRC_IN));
}
IconCompat getNotificationIcon() {
if (TextUtils.isEmpty(mPackageName)) {
return null;