Merge "Re-re-designs the volume panel." into sc-dev

This commit is contained in:
Julia Reynolds
2021-04-21 14:47:09 +00:00
committed by Android (Google) Code Review
8 changed files with 217 additions and 136 deletions

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2021 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
-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
<item>
<shape>
<size android:width="@dimen/volume_dialog_panel_width" />
<solid android:color="?androidprv:attr/colorSurface" />
<corners android:radius="@dimen/volume_dialog_panel_width_half"/>
</shape>
</item>
</layer-list>

View File

@@ -9,7 +9,6 @@
~ 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.
@@ -19,38 +18,24 @@
and a bottom-aligned icon) and a progress layer (with an accent-colored round rect and icon)
that moves up and down with the progress value. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingMode="stack" >
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:paddingMode="stack" >
<item android:id="@android:id/background"
android:gravity="center_vertical|fill_horizontal">
<layer-list>
<item android:id="@+id/volume_seekbar_background_solid">
<shape>
<size android:height="@dimen/volume_dialog_slider_width" />
<solid android:color="?android:attr/colorBackgroundFloating" />
<corners android:radius="@dimen/volume_dialog_slider_corner_radius" />
</shape>
</item>
<item
android:id="@+id/volume_seekbar_background_icon"
android:gravity="center_vertical|left"
android:height="@dimen/rounded_slider_icon_size"
android:width="@dimen/rounded_slider_icon_size"
android:left="@dimen/rounded_slider_icon_inset">
<rotate
android:fromDegrees="-270"
android:toDegrees="-270">
<!-- A placeholder drawable is required here - it'll be replaced in code. -->
<com.android.systemui.util.AlphaTintDrawableWrapper
android:drawable="@drawable/ic_volume_media"
android:tint="?android:attr/colorAccent" />
</rotate>
</item>
</layer-list>
<inset
android:insetLeft="@dimen/rounded_slider_track_inset"
android:insetRight="@dimen/rounded_slider_track_inset" >
<shape>
<size android:height="@dimen/volume_dialog_track_width" />
<corners android:radius="@dimen/volume_dialog_track_corner_radius" />
<solid android:color="?androidprv:attr/colorAccentSecondaryVariant" />
</shape>
</inset>
</item>
<item android:id="@android:id/progress"
android:gravity="center_vertical|fill_horizontal">
<com.android.systemui.util.RoundedCornerProgressDrawable
android:drawable="@drawable/volume_row_seekbar_progress"
android:gravity="center_vertical|fill_horizontal">
<com.android.systemui.util.RoundedCornerProgressDrawable
android:drawable="@drawable/volume_row_seekbar_progress"
/>
</item>
</layer-list>

View File

@@ -18,12 +18,13 @@
<!-- Progress drawable for volume row SeekBars. This is the accent-colored round rect that moves up
and down as the progress value changes. -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:autoMirrored="true">
<item android:id="@+id/volume_seekbar_progress_solid">
<shape>
<size android:height="@dimen/volume_dialog_panel_width" />
<size android:height="@dimen/volume_dialog_slider_width" />
<solid android:color="?android:attr/colorAccent" />
<corners android:radius="@dimen/volume_dialog_panel_width_half"/>
<corners android:radius="@dimen/volume_dialog_slider_corner_radius"/>
</shape>
</item>
<item
@@ -38,7 +39,7 @@
<!-- A placeholder drawable is required here - it'll be replaced in code. -->
<com.android.systemui.util.AlphaTintDrawableWrapper
android:drawable="@drawable/ic_volume_media"
android:tint="?android:attr/colorBackgroundFloating" />
android:tint="?androidprv:attr/colorAccentPrimaryVariant" />
</rotate>
</item>
</layer-list>

View File

@@ -16,114 +16,119 @@
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sysui="http://schemas.android.com/apk/res-auto"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:id="@+id/volume_dialog_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_gravity="right"
android:paddingRight="@dimen/volume_dialog_stream_padding"
android:clipToPadding="false"
android:background="@android:color/transparent"
android:theme="@style/volume_dialog_theme">
<!-- right-aligned to be physically near volume button -->
<LinearLayout
android:id="@+id/volume_dialog"
android:minWidth="@dimen/volume_dialog_panel_width"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_gravity="right"
android:background="@android:color/transparent"
android:paddingRight="@dimen/volume_dialog_panel_transparent_padding_right"
android:paddingLeft="@dimen/volume_dialog_panel_transparent_padding"
android:layout_marginRight="@dimen/volume_dialog_panel_transparent_padding_right"
android:orientation="vertical"
android:clipToPadding="false"
android:clipChildren="false">
<include layout="@layout/volume_ringer_drawer" />
<FrameLayout
android:visibility="gone"
android:id="@+id/ringer"
android:layout_width="@dimen/volume_dialog_ringer_size"
android:layout_height="@dimen/volume_dialog_ringer_size"
android:layout_marginBottom="@dimen/volume_dialog_spacer"
android:gravity="right"
android:layout_gravity="right"
android:translationZ="@dimen/volume_dialog_elevation"
android:clipToPadding="false"
android:background="@drawable/rounded_bg_full">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/ringer_icon"
style="@style/VolumeButtons"
android:background="@drawable/rounded_ripple"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:padding="@dimen/volume_dialog_ringer_icon_padding"
android:tint="?android:attr/textColorPrimary"
android:layout_gravity="center"
android:soundEffectsEnabled="false" />
<include layout="@layout/volume_dnd_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/volume_dialog_stream_padding"
android:layout_marginTop="6dp"/>
</FrameLayout>
<LinearLayout
android:id="@+id/main"
android:minWidth="@dimen/volume_dialog_panel_width"
android:id="@+id/volume_dialog_ringer_and_rows_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_gravity="right"
android:orientation="vertical"
android:padding="7dp"
android:clipChildren="false"
android:clipToPadding="false" >
android:background="@drawable/volume_background">
<include layout="@layout/volume_ringer_drawer" />
<FrameLayout
android:visibility="gone"
android:id="@+id/ringer"
android:layout_width="@dimen/volume_dialog_ringer_size"
android:layout_height="@dimen/volume_dialog_ringer_size"
android:layout_marginBottom="@dimen/volume_dialog_spacer"
android:gravity="right"
android:layout_gravity="right"
android:translationZ="@dimen/volume_dialog_elevation"
android:clipToPadding="false"
android:background="@drawable/rounded_bg_full">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/ringer_icon"
style="@style/VolumeButtons"
android:background="@drawable/rounded_ripple"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:padding="@dimen/volume_dialog_ringer_icon_padding"
android:tint="?android:attr/textColorPrimary"
android:layout_gravity="center"
android:soundEffectsEnabled="false" />
<include layout="@layout/volume_dnd_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/volume_dialog_stream_padding"
android:layout_marginTop="6dp"/>
</FrameLayout>
<LinearLayout
android:id="@+id/volume_dialog_rows"
android:id="@+id/main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="@dimen/volume_dialog_panel_width"
android:gravity="center"
android:orientation="horizontal"
android:layout_marginTop="@dimen/volume_row_slider_padding_start">
<!-- volume rows added and removed here! :-) -->
android:gravity="right"
android:layout_gravity="right"
android:orientation="vertical"
android:clipChildren="false"
android:clipToPadding="false" >
<LinearLayout
android:id="@+id/volume_dialog_rows"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:layout_marginTop="@dimen/volume_row_slider_padding_start">
<!-- volume rows added and removed here! :-) -->
</LinearLayout>
<FrameLayout
android:id="@+id/settings_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/settings"
android:src="@drawable/horizontal_ellipsis"
android:layout_width="@dimen/volume_dialog_tap_target_size"
android:layout_height="@dimen/volume_dialog_tap_target_size"
android:layout_gravity="center"
android:contentDescription="@string/accessibility_volume_settings"
android:background="@drawable/ripple_drawable_20dp"
android:tint="?androidprv:attr/colorAccent"
android:soundEffectsEnabled="false" />
</FrameLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/settings_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.android.keyguard.AlphaOptimizedImageButton
android:id="@+id/settings"
android:src="@drawable/horizontal_ellipsis"
android:layout_width="@dimen/volume_dialog_tap_target_size"
android:layout_height="@dimen/volume_dialog_tap_target_size"
android:layout_gravity="center"
android:contentDescription="@string/accessibility_volume_settings"
android:background="@drawable/ripple_drawable_20dp"
android:tint="?android:attr/colorBackgroundFloating"
android:soundEffectsEnabled="false" />
</FrameLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/odi_captions"
android:layout_width="@dimen/volume_dialog_caption_size"
android:layout_height="@dimen/volume_dialog_caption_size"
android:layout_marginTop="@dimen/volume_dialog_spacer"
android:layout_marginTop="@dimen/volume_dialog_row_margin_bottom"
android:gravity="right"
android:layout_gravity="right"
android:layout_gravity="center"
android:clipToPadding="false"
android:background="@drawable/rounded_bg_full">
android:background="@drawable/volume_background">
<com.android.systemui.volume.CaptionsToggleImageButton
android:id="@+id/odi_captions_icon"
android:src="@drawable/ic_volume_odi_captions_disabled"
style="@style/VolumeButtons"
android:background="@drawable/rounded_ripple"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tint="?android:attr/colorAccent"
@@ -131,7 +136,6 @@
android:soundEffectsEnabled="false"
sysui:optedOut="false"/>
</FrameLayout>
</LinearLayout>
<ViewStub

View File

@@ -17,7 +17,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:tag="row"
android:layout_height="wrap_content"
android:layout_width="@dimen/volume_dialog_panel_width"
android:layout_width="@dimen/volume_dialog_slider_width"
android:clipChildren="false"
android:clipToPadding="false"
android:translationZ="@dimen/volume_dialog_elevation"
@@ -25,7 +25,7 @@
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="@dimen/volume_dialog_panel_width"
android:layout_width="@dimen/volume_dialog_slider_width"
android:gravity="center"
android:layout_gravity="center"
android:orientation="vertical" >
@@ -54,7 +54,9 @@
android:layout_width="@dimen/volume_row_slider_height"
android:layout_height="match_parent"
android:layout_gravity="center"
android:thumb="@android:color/transparent"
android:thumb="@null"
android:splitTrack="false"
android:progressDrawable="@drawable/volume_row_seekbar"
android:rotation="270" />
</FrameLayout>

View File

@@ -60,7 +60,7 @@
android:layout_width="@dimen/volume_ringer_drawer_icon_size"
android:layout_height="@dimen/volume_ringer_drawer_icon_size"
android:layout_gravity="center"
android:tint="?android:attr/colorAccent"
android:tint="?android:attr/textColorPrimary"
android:src="@drawable/ic_volume_ringer_vibrate" />
</FrameLayout>
@@ -77,7 +77,7 @@
android:layout_width="@dimen/volume_ringer_drawer_icon_size"
android:layout_height="@dimen/volume_ringer_drawer_icon_size"
android:layout_gravity="center"
android:tint="?android:attr/colorAccent"
android:tint="?android:attr/textColorPrimary"
android:src="@drawable/ic_volume_ringer_mute" />
</FrameLayout>
@@ -94,7 +94,7 @@
android:layout_width="@dimen/volume_ringer_drawer_icon_size"
android:layout_height="@dimen/volume_ringer_drawer_icon_size"
android:layout_gravity="center"
android:tint="?android:attr/colorAccent"
android:tint="?android:attr/textColorPrimary"
android:src="@drawable/ic_volume_ringer" />
</FrameLayout>
@@ -118,7 +118,7 @@
android:layout_width="@dimen/volume_ringer_drawer_icon_size"
android:layout_height="@dimen/volume_ringer_drawer_icon_size"
android:layout_gravity="center"
android:tint="?android:attr/colorBackgroundFloating"
android:tint="?android:attr/textColorPrimaryInverse"
android:src="@drawable/ic_volume_media" />
</FrameLayout>

View File

@@ -461,29 +461,33 @@
<!-- The width of the panel that holds the quick settings. -->
<dimen name="qs_panel_width">@dimen/notification_panel_width</dimen>
<dimen name="volume_dialog_panel_transparent_padding_right">4dp</dimen>
<dimen name="volume_dialog_panel_transparent_padding_right">8dp</dimen>
<dimen name="volume_dialog_panel_transparent_padding">20dp</dimen>
<dimen name="volume_dialog_stream_padding">12dp</dimen>
<dimen name="volume_dialog_panel_width">64dp</dimen>
<dimen name="volume_dialog_panel_width">56dp</dimen>
<dimen name="volume_dialog_panel_width_half">32dp</dimen>
<dimen name="volume_dialog_panel_width_half">28dp</dimen>
<dimen name="volume_dialog_slider_width">42dp</dimen>
<dimen name="volume_dialog_slider_corner_radius">21dp</dimen>
<dimen name="volume_dialog_slider_height">116dp</dimen>
<dimen name="volume_dialog_slider_width">@dimen/volume_dialog_panel_width</dimen>
<dimen name="volume_dialog_track_width">4dp</dimen>
<dimen name="volume_dialog_slider_corner_radius">@dimen/volume_dialog_panel_width_half</dimen>
<dimen name="volume_dialog_track_corner_radius">2dp</dimen>
<dimen name="volume_dialog_ringer_size">64dp</dimen>
<dimen name="volume_dialog_ringer_size">42dp</dimen>
<dimen name="volume_dialog_ringer_icon_padding">20dp</dimen>
<dimen name="volume_dialog_caption_size">64dp</dimen>
<dimen name="volume_dialog_caption_size">56dp</dimen>
<dimen name="volume_dialog_tap_target_size">48dp</dimen>
<dimen name="volume_dialog_tap_target_size">42dp</dimen>
<dimen name="volume_dialog_spacer">4dp</dimen>
@@ -504,8 +508,8 @@
<dimen name="volume_tool_tip_arrow_corner_radius">2dp</dimen>
<!-- Size of each item in the ringer selector drawer. -->
<dimen name="volume_ringer_drawer_item_size">64dp</dimen>
<dimen name="volume_ringer_drawer_item_size_half">32dp</dimen>
<dimen name="volume_ringer_drawer_item_size">42dp</dimen>
<dimen name="volume_ringer_drawer_item_size_half">21dp</dimen>
<!-- Size of the icon inside each item in the ringer selector drawer. -->
<dimen name="volume_ringer_drawer_icon_size">24dp</dimen>

View File

@@ -53,6 +53,7 @@ import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Region;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -96,6 +97,8 @@ import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.android.internal.graphics.drawable.BackgroundBlurDrawable;
import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
@@ -162,6 +165,9 @@ public class VolumeDialogImpl implements VolumeDialog,
private ViewGroup mDialogRowsView;
private ViewGroup mRinger;
@Nullable private View mRingerAndRowsContainer;
@Nullable private Drawable mRingerAndRowsContainerBackground;
private ViewGroup mSelectedRingerContainer;
private ImageView mSelectedRingerIcon;
@@ -183,6 +189,12 @@ public class VolumeDialogImpl implements VolumeDialog,
private ImageView mRingerDrawerIconAnimatingSelected;
private ImageView mRingerDrawerIconAnimatingDeselected;
/**
* Animates the volume dialog's background drawable bounds upwards, to match the height of the
* expanded ringer drawer.
*/
private final ValueAnimator mAnimateUpBackgroundToMatchDrawer = ValueAnimator.ofFloat(1f, 0f);
private boolean mIsRingerDrawerOpen = false;
private ImageButton mRingerIcon;
@@ -586,20 +598,26 @@ public class VolumeDialogImpl implements VolumeDialog,
row.anim = null;
mRingerAndRowsContainer = mDialogView.findViewById(
R.id.volume_dialog_ringer_and_rows_container);
if (mRingerAndRowsContainer != null) {
// Wait for layout so the background bounds are set, then set the background top to the
// ringer drawer closed position.
mRingerAndRowsContainer.post(() -> {
final LayerDrawable bgWrapper =
((LayerDrawable) mRingerAndRowsContainer.getBackground());
if (bgWrapper != null) {
mRingerAndRowsContainerBackground = bgWrapper.getDrawable(0);
setRingerAndRowsBackgroundTop(1f /* closedAmount */);
}
});
}
final LayerDrawable seekbarDrawable =
(LayerDrawable) mContext.getDrawable(R.drawable.volume_row_seekbar);
final LayerDrawable seekbarBgDrawable =
(LayerDrawable) seekbarDrawable.findDrawableByLayerId(android.R.id.background);
row.sliderBgSolid = seekbarBgDrawable.findDrawableByLayerId(
R.id.volume_seekbar_background_solid);
final Drawable sliderBgIcon = seekbarBgDrawable.findDrawableByLayerId(
R.id.volume_seekbar_background_icon);
row.sliderBgIcon = sliderBgIcon != null ? (AlphaTintDrawableWrapper)
((RotateDrawable) sliderBgIcon).getDrawable() : null;
final LayerDrawable seekbarProgressDrawable = (LayerDrawable)
((RoundedCornerProgressDrawable) seekbarDrawable.findDrawableByLayerId(
android.R.id.progress)).getDrawable();
@@ -679,10 +697,10 @@ public class VolumeDialogImpl implements VolumeDialog,
mDialogView.getPaddingLeft(),
mDialogView.getPaddingTop(),
mDialogView.getPaddingRight(),
mDialogView.getPaddingBottom() + (mRingerCount - 1) * mRingerDrawerItemSize);
mDialogView.getPaddingBottom() + getRingerDrawerOpenExtraHeight());
} else {
mDialogView.setPadding(
mDialogView.getPaddingLeft() + (mRingerCount - 1) * mRingerDrawerItemSize,
mDialogView.getPaddingLeft() + getRingerDrawerOpenExtraHeight(),
mDialogView.getPaddingTop(),
mDialogView.getPaddingRight(),
mDialogView.getPaddingBottom());
@@ -731,6 +749,9 @@ public class VolumeDialogImpl implements VolumeDialog,
}
});
mRingerDrawerIconColorAnimator.setDuration(DRAWER_ANIMATION_DURATION_SHORT);
mAnimateUpBackgroundToMatchDrawer.addUpdateListener(valueAnimator ->
setRingerAndRowsBackgroundTop((float) valueAnimator.getAnimatedValue()));
}
private ImageView getDrawerIconViewForMode(int mode) {
@@ -789,14 +810,16 @@ public class VolumeDialogImpl implements VolumeDialog,
mRingerDrawerContainer.setAlpha(0f);
mRingerDrawerContainer.setVisibility(VISIBLE);
final int ringerDrawerAnimationDuration = mState.ringerModeInternal == RINGER_MODE_VIBRATE
? DRAWER_ANIMATION_DURATION_SHORT
: DRAWER_ANIMATION_DURATION;
// Animate the drawer up and visible.
mRingerDrawerContainer.animate()
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
// Vibrate is way farther up, so give the selected ringer icon a head start if
// vibrate is selected.
.setDuration(mState.ringerModeInternal == RINGER_MODE_VIBRATE
? DRAWER_ANIMATION_DURATION_SHORT
: DRAWER_ANIMATION_DURATION)
.setDuration(ringerDrawerAnimationDuration)
.setStartDelay(mState.ringerModeInternal == RINGER_MODE_VIBRATE
? DRAWER_ANIMATION_DURATION - DRAWER_ANIMATION_DURATION_SHORT
: 0)
@@ -812,6 +835,10 @@ public class VolumeDialogImpl implements VolumeDialog,
.withEndAction(() ->
getDrawerIconViewForMode(mState.ringerModeInternal).setVisibility(VISIBLE));
mAnimateUpBackgroundToMatchDrawer.setDuration(ringerDrawerAnimationDuration);
mAnimateUpBackgroundToMatchDrawer.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
mAnimateUpBackgroundToMatchDrawer.start();
if (!isLandscape()) {
mSelectedRingerContainer.animate()
.translationY(getTranslationInDrawerForRingerMode(mState.ringerModeInternal))
@@ -853,6 +880,10 @@ public class VolumeDialogImpl implements VolumeDialog,
.start();
}
mAnimateUpBackgroundToMatchDrawer.setDuration(DRAWER_ANIMATION_DURATION);
mAnimateUpBackgroundToMatchDrawer.setInterpolator(Interpolators.FAST_OUT_SLOW_IN_REVERSE);
mAnimateUpBackgroundToMatchDrawer.reverse();
mSelectedRingerContainer.animate()
.translationX(0f)
.translationY(0f)
@@ -1524,7 +1555,7 @@ public class VolumeDialogImpl implements VolumeDialog,
}
final ColorStateList colorTint = useActiveColoring
? Utils.getColorAccent(mContext)
: Utils.getColorAttr(mContext, android.R.attr.colorForeground);
: Utils.getColorAttr(mContext, com.android.internal.R.attr.colorAccentSecondary);
final int alpha = useActiveColoring
? Color.alpha(colorTint.getDefaultColor())
: getAlphaAttr(android.R.attr.secondaryContentAlpha);
@@ -1532,18 +1563,24 @@ public class VolumeDialogImpl implements VolumeDialog,
final ColorStateList bgTint = Utils.getColorAttr(
mContext, android.R.attr.colorBackgroundFloating);
final ColorStateList inverseTextTint = Utils.getColorAttr(
mContext, com.android.internal.R.attr.textColorPrimaryInverse);
row.sliderProgressSolid.setTintList(colorTint);
if (row.sliderBgIcon != null) {
row.sliderBgIcon.setTintList(colorTint);
}
row.sliderBgSolid.setTintList(bgTint);
if (row.sliderBgSolid != null) {
row.sliderBgSolid.setTintList(bgTint);
}
if (row.sliderProgressIcon != null) {
row.sliderProgressIcon.setTintList(bgTint);
}
if (row.icon != null) {
row.icon.setImageTintList(colorTint);
row.icon.setImageTintList(inverseTextTint);
row.icon.setImageAlpha(alpha);
}
@@ -1682,6 +1719,28 @@ public class VolumeDialogImpl implements VolumeDialog,
};
}
/**
* Return the height of the 1-2 extra ringer options that are made visible when the ringer
* drawer is opened.
*/
private int getRingerDrawerOpenExtraHeight() {
return (mRingerCount - 1) * mRingerDrawerItemSize;
}
/**
* Sets the top of the background drawable behind the container view for the ringer icon and the
* volume rows, depending on whether the ringer drawer is open or closed.
*/
private void setRingerAndRowsBackgroundTop(float drawerClosedAmount) {
if (mRingerAndRowsContainerBackground == null) {
return;
}
final Rect bounds = mRingerAndRowsContainerBackground.copyBounds();
bounds.top = (int) (drawerClosedAmount * getRingerDrawerOpenExtraHeight());
mRingerAndRowsContainerBackground.setBounds(bounds);
}
private final VolumeDialogController.Callbacks mControllerCallbackH
= new VolumeDialogController.Callbacks() {
@Override