diff options
author | shaoweishen <shaoweishen@google.com> | 2022-06-17 01:26:25 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-24 21:09:34 +0000 |
commit | ff4d130c0ee2248ff7b4a80fbc481320dbf817d9 (patch) | |
tree | 94f6ffd22189b9e785fec33cba3d0856f1fbb933 | |
parent | 73c96fe7ec2599d689f172ae605c237455d8e3b5 (diff) | |
download | base-ff4d130c0ee2248ff7b4a80fbc481320dbf817d9.tar.gz |
[Output Switcher] add check on animation
check if animation on seekbar is needed, if it's launching for first
time, skip animation.
Test: verified on device
Bug: 234412421
Change-Id: Id2a84c0734ebeee037722452ae91b1dfb8b18cac
(cherry picked from commit 8cc360e9654737656d0d0673a9aa800992521779)
Merged-In: Id2a84c0734ebeee037722452ae91b1dfb8b18cac
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java | 7 | ||||
-rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java | 15 |
2 files changed, 21 insertions, 1 deletions
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 ccc0a3db0611..bec67397a926 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java @@ -69,11 +69,13 @@ public abstract class MediaOutputBaseAdapter extends View mHolderView; boolean mIsDragging; int mCurrentActivePosition; + private boolean mIsInitVolumeFirstTime; public MediaOutputBaseAdapter(MediaOutputController controller) { mController = controller; mIsDragging = false; mCurrentActivePosition = -1; + mIsInitVolumeFirstTime = true; } @Override @@ -275,7 +277,7 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar.setMaxVolume(device.getMaxVolume()); final int currentVolume = device.getCurrentVolume(); if (mSeekBar.getVolume() != currentVolume) { - if (isCurrentSeekbarInvisible) { + if (isCurrentSeekbarInvisible && !mIsInitVolumeFirstTime) { animateCornerAndVolume(mSeekBar.getProgress(), MediaOutputSeekbar.scaleVolumeToProgress(currentVolume)); } else { @@ -284,6 +286,9 @@ public abstract class MediaOutputBaseAdapter extends } } } + if (mIsInitVolumeFirstTime) { + mIsInitVolumeFirstTime = false; + } mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java index 11326e76b25e..59475cf0cb90 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputAdapterTest.java @@ -19,6 +19,7 @@ package com.android.systemui.media.dialog; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -51,6 +52,8 @@ public class MediaOutputAdapterTest extends SysuiTestCase { private static final String TEST_DEVICE_ID_1 = "test_device_id_1"; private static final String TEST_DEVICE_ID_2 = "test_device_id_2"; private static final String TEST_SESSION_NAME = "test_session_name"; + private static final int TEST_MAX_VOLUME = 20; + private static final int TEST_CURRENT_VOLUME = 10; // Mock private MediaOutputController mMediaOutputController = mock(MediaOutputController.class); @@ -64,12 +67,14 @@ public class MediaOutputAdapterTest extends SysuiTestCase { private MediaOutputAdapter mMediaOutputAdapter; private MediaOutputAdapter.MediaDeviceViewHolder mViewHolder; private List<MediaDevice> mMediaDevices = new ArrayList<>(); + MediaOutputSeekbar mSpyMediaOutputSeekbar; @Before public void setUp() { mMediaOutputAdapter = new MediaOutputAdapter(mMediaOutputController, mMediaOutputDialog); mViewHolder = (MediaOutputAdapter.MediaDeviceViewHolder) mMediaOutputAdapter .onCreateViewHolder(new LinearLayout(mContext), 0); + mSpyMediaOutputSeekbar = spy(mViewHolder.mSeekBar); when(mMediaOutputController.getMediaDevices()).thenReturn(mMediaDevices); when(mMediaOutputController.hasAdjustVolumeUserRestriction()).thenReturn(false); @@ -169,6 +174,16 @@ public class MediaOutputAdapterTest extends SysuiTestCase { } @Test + public void onBindViewHolder_initSeekbar_setsVolume() { + when(mMediaDevice1.getMaxVolume()).thenReturn(TEST_MAX_VOLUME); + when(mMediaDevice1.getCurrentVolume()).thenReturn(TEST_CURRENT_VOLUME); + mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); + + assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(mViewHolder.mSeekBar.getVolume()).isEqualTo(TEST_CURRENT_VOLUME); + } + + @Test public void onBindViewHolder_bindNonActiveConnectedDevice_verifyView() { mMediaOutputAdapter.onBindViewHolder(mViewHolder, 1); |