Merge "[Output Switcher] UI polish and A11y bug fix" into udc-dev am: 4adfb70d9a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23241359
Change-Id: Ie732412b3cf00b259e511cee334685d3f32740ac
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/res/drawable/media_output_dialog_seekbar_background.xml b/packages/SystemUI/res/drawable/media_output_dialog_seekbar_background.xml
index 43cf003..adeb81f 100644
--- a/packages/SystemUI/res/drawable/media_output_dialog_seekbar_background.xml
+++ b/packages/SystemUI/res/drawable/media_output_dialog_seekbar_background.xml
@@ -18,8 +18,8 @@
<item android:id="@android:id/background">
<shape>
<corners
- android:bottomRightRadius="28dp"
- android:topRightRadius="28dp"
+ android:bottomRightRadius="@dimen/media_output_dialog_active_background_radius"
+ android:topRightRadius="@dimen/media_output_dialog_active_background_radius"
/>
<solid android:color="@android:color/transparent" />
<size
diff --git a/packages/SystemUI/res/drawable/media_output_item_background_active.xml b/packages/SystemUI/res/drawable/media_output_item_background_active.xml
index 839db4a..826e0ca 100644
--- a/packages/SystemUI/res/drawable/media_output_item_background_active.xml
+++ b/packages/SystemUI/res/drawable/media_output_item_background_active.xml
@@ -17,6 +17,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
- android:radius="28dp"/>
+ android:radius="@dimen/media_output_dialog_active_background_radius"/>
<solid android:color="@color/media_dialog_item_background" />
</shape>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/media_output_list_item_advanced.xml b/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
index a650512..054193a 100644
--- a/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
+++ b/packages/SystemUI/res/layout/media_output_list_item_advanced.xml
@@ -50,12 +50,16 @@
android:id="@+id/icon_area"
android:layout_width="64dp"
android:layout_height="64dp"
+ android:focusable="false"
+ android:importantForAccessibility="no"
android:background="@drawable/media_output_title_icon_area"
android:layout_gravity="center_vertical|start">
<ImageView
android:id="@+id/title_icon"
android:layout_width="24dp"
android:layout_height="24dp"
+ android:focusable="false"
+ android:importantForAccessibility="no"
android:animateLayoutChanges="true"
android:layout_gravity="center"/>
<TextView
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index d5806ec..271fab1 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1319,7 +1319,7 @@
<dimen name="media_output_dialog_title_anim_y_delta">12.5dp</dimen>
<dimen name="media_output_dialog_app_tier_icon_size">20dp</dimen>
<dimen name="media_output_dialog_background_radius">16dp</dimen>
- <dimen name="media_output_dialog_active_background_radius">28dp</dimen>
+ <dimen name="media_output_dialog_active_background_radius">30dp</dimen>
<dimen name="media_output_dialog_default_margin_end">16dp</dimen>
<dimen name="media_output_dialog_selectable_margin_end">80dp</dimen>
<dimen name="media_output_dialog_list_padding_top">8dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java
index af06258..01f7904 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java
@@ -186,7 +186,6 @@
mEndTouchArea.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
mContainerLayout.setOnClickListener(null);
mContainerLayout.setContentDescription(null);
- mTitleIcon.setOnClickListener(null);
mTitleText.setTextColor(mController.getColorItemContent());
mSubTitleText.setTextColor(mController.getColorItemContent());
mTwoLineTitleText.setTextColor(mController.getColorItemContent());
@@ -313,32 +312,35 @@
}
mSeekBar.setMaxVolume(device.getMaxVolume());
final int currentVolume = device.getCurrentVolume();
- if (mSeekBar.getVolume() != currentVolume) {
- if (isCurrentSeekbarInvisible && !mIsInitVolumeFirstTime) {
- updateTitleIcon(currentVolume == 0 ? R.drawable.media_output_icon_volume_off
- : R.drawable.media_output_icon_volume,
- mController.getColorItemContent());
- } else {
- if (!mVolumeAnimator.isStarted()) {
- int percentage =
- (int) ((double) currentVolume * VOLUME_PERCENTAGE_SCALE_SIZE
- / (double) mSeekBar.getMax());
- if (percentage == 0) {
- updateMutedVolumeIcon();
- } else {
- updateUnmutedVolumeIcon();
+ if (!mIsDragging) {
+ if (mSeekBar.getVolume() != currentVolume) {
+ if (isCurrentSeekbarInvisible && !mIsInitVolumeFirstTime) {
+ updateTitleIcon(currentVolume == 0 ? R.drawable.media_output_icon_volume_off
+ : R.drawable.media_output_icon_volume,
+ mController.getColorItemContent());
+ } else {
+ if (!mVolumeAnimator.isStarted()) {
+ int percentage =
+ (int) ((double) currentVolume * VOLUME_PERCENTAGE_SCALE_SIZE
+ / (double) mSeekBar.getMax());
+ if (percentage == 0) {
+ updateMutedVolumeIcon();
+ } else {
+ updateUnmutedVolumeIcon();
+ }
+ mSeekBar.setVolume(currentVolume);
}
- mSeekBar.setVolume(currentVolume);
}
+ } else if (currentVolume == 0) {
+ mSeekBar.resetVolume();
+ updateMutedVolumeIcon();
}
- } else if (currentVolume == 0) {
- mSeekBar.resetVolume();
- updateMutedVolumeIcon();
}
if (mIsInitVolumeFirstTime) {
mIsInitVolumeFirstTime = false;
}
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ boolean mStartFromMute = false;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (device == null || !fromUser) {
@@ -352,11 +354,12 @@
mVolumeValueText.setText(mContext.getResources().getString(
R.string.media_output_dialog_volume_percentage, percentage));
mVolumeValueText.setVisibility(View.VISIBLE);
+ if (mStartFromMute) {
+ updateUnmutedVolumeIcon();
+ mStartFromMute = false;
+ }
if (progressToVolume != deviceVolume) {
mController.adjustVolume(device, progressToVolume);
- if (deviceVolume == 0) {
- updateUnmutedVolumeIcon();
- }
}
}
@@ -364,6 +367,9 @@
public void onStartTrackingTouch(SeekBar seekBar) {
mTitleIcon.setVisibility(View.INVISIBLE);
mVolumeValueText.setVisibility(View.VISIBLE);
+ int currentVolume = MediaOutputSeekbar.scaleProgressToVolume(
+ seekBar.getProgress());
+ mStartFromMute = (currentVolume == 0);
mIsDragging = true;
}
@@ -371,10 +377,7 @@
public void onStopTrackingTouch(SeekBar seekBar) {
int currentVolume = MediaOutputSeekbar.scaleProgressToVolume(
seekBar.getProgress());
- int percentage =
- (int) ((double) currentVolume * VOLUME_PERCENTAGE_SCALE_SIZE
- / (double) seekBar.getMax());
- if (percentage == 0) {
+ if (currentVolume == 0) {
seekBar.setProgress(0);
updateMutedVolumeIcon();
} else {
@@ -411,7 +414,7 @@
}
void updateIconAreaClickListener(View.OnClickListener listener) {
- mTitleIcon.setOnClickListener(listener);
+ mIconAreaLayout.setOnClickListener(listener);
}
void initMutingExpectedDevice() {
@@ -501,14 +504,15 @@
mSeekBar.setOnTouchListener((v, event) -> false);
updateIconAreaClickListener((v) -> {
if (device.getCurrentVolume() == 0) {
+ mSeekBar.setVolume(UNMUTE_DEFAULT_VOLUME);
mController.adjustVolume(device, UNMUTE_DEFAULT_VOLUME);
updateUnmutedVolumeIcon();
- mTitleIcon.setOnTouchListener(((iconV, event) -> false));
+ mIconAreaLayout.setOnTouchListener(((iconV, event) -> false));
} else {
mSeekBar.resetVolume();
mController.adjustVolume(device, 0);
updateMutedVolumeIcon();
- mTitleIcon.setOnTouchListener(((iconV, event) -> {
+ mIconAreaLayout.setOnTouchListener(((iconV, event) -> {
mSeekBar.dispatchTouchEvent(event);
return false;
}));