Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eebd136f authored by Anton Potapov's avatar Anton Potapov
Browse files

Add overscroll animation to the Volume Dialog sliders

Flag: com.android.systemui.volume_redesign
Test: manual on foldable
Bug: 369995895
Change-Id: I31b79f00a18284fee4b7c691f0f484147153c545
parent 559895c2
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -71,6 +71,9 @@
        android:layout_height="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:layout_marginTop="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:layout_marginBottom="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:layout_marginBottom="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:clipChildren="false"
        android:clipToOutline="false"
        android:clipToPadding="false"
        android:divider="@drawable/volume_dialog_floating_sliders_spacer"
        android:divider="@drawable/volume_dialog_floating_sliders_spacer"
        android:gravity="bottom"
        android:gravity="bottom"
        android:orientation="horizontal"
        android:orientation="horizontal"
+2 −0
Original line number Original line Diff line number Diff line
@@ -2106,6 +2106,8 @@


    <fraction name="volume_dialog_half_opened_bias">0.2</fraction>
    <fraction name="volume_dialog_half_opened_bias">0.2</fraction>


    <dimen name="volume_dialog_slider_max_deviation">56dp</dimen>

    <dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>
    <dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>


    <dimen name="volume_dialog_ringer_drawer_button_size">@dimen/volume_dialog_button_size</dimen>
    <dimen name="volume_dialog_ringer_drawer_button_size">@dimen/volume_dialog_button_size</dimen>
+3 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.volume.dialog.sliders.dagger
package com.android.systemui.volume.dialog.sliders.dagger


import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogOverscrollViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderHapticsViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderHapticsViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderTouchesViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderTouchesViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderViewBinder
@@ -37,6 +38,8 @@ interface VolumeDialogSliderComponent {


    fun sliderHapticsViewBinder(): VolumeDialogSliderHapticsViewBinder
    fun sliderHapticsViewBinder(): VolumeDialogSliderHapticsViewBinder


    fun overscrollViewBinder(): VolumeDialogOverscrollViewBinder

    @Subcomponent.Factory
    @Subcomponent.Factory
    interface Factory {
    interface Factory {


+0 −2
Original line number Original line Diff line number Diff line
@@ -16,7 +16,6 @@


package com.android.systemui.volume.dialog.sliders.data.repository
package com.android.systemui.volume.dialog.sliders.data.repository


import android.annotation.SuppressLint
import android.view.MotionEvent
import android.view.MotionEvent
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import javax.inject.Inject
import javax.inject.Inject
@@ -27,7 +26,6 @@ import kotlinx.coroutines.flow.filterNotNull
@VolumeDialogSliderScope
@VolumeDialogSliderScope
class VolumeDialogSliderTouchEventsRepository @Inject constructor() {
class VolumeDialogSliderTouchEventsRepository @Inject constructor() {


    @SuppressLint("SharedFlowCreation")
    private val mutableSliderTouchEvents: MutableStateFlow<MotionEvent?> = MutableStateFlow(null)
    private val mutableSliderTouchEvents: MutableStateFlow<MotionEvent?> = MutableStateFlow(null)
    val sliderTouchEvent: Flow<MotionEvent> = mutableSliderTouchEvents.filterNotNull()
    val sliderTouchEvent: Flow<MotionEvent> = mutableSliderTouchEvents.filterNotNull()


+8 −2
Original line number Original line Diff line number Diff line
@@ -17,14 +17,18 @@
package com.android.systemui.volume.dialog.sliders.domain.interactor
package com.android.systemui.volume.dialog.sliders.domain.interactor


import com.android.systemui.plugins.VolumeDialogController
import com.android.systemui.plugins.VolumeDialogController
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogStateInteractor
import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogStateInteractor
import com.android.systemui.volume.dialog.shared.model.VolumeDialogStreamModel
import com.android.systemui.volume.dialog.shared.model.VolumeDialogStreamModel
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import javax.inject.Inject
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.stateIn


/** Operates a state of particular slider of the Volume Dialog. */
/** Operates a state of particular slider of the Volume Dialog. */
@VolumeDialogSliderScope
@VolumeDialogSliderScope
@@ -32,6 +36,7 @@ class VolumeDialogSliderInteractor
@Inject
@Inject
constructor(
constructor(
    private val sliderType: VolumeDialogSliderType,
    private val sliderType: VolumeDialogSliderType,
    @VolumeDialog private val coroutineScope: CoroutineScope,
    volumeDialogStateInteractor: VolumeDialogStateInteractor,
    volumeDialogStateInteractor: VolumeDialogStateInteractor,
    private val volumeDialogController: VolumeDialogController,
    private val volumeDialogController: VolumeDialogController,
) {
) {
@@ -47,7 +52,8 @@ constructor(
                    }
                    }
                }
                }
            }
            }
            .distinctUntilChanged()
            .stateIn(coroutineScope, SharingStarted.Eagerly, null)
            .filterNotNull()


    fun setStreamVolume(userLevel: Int) {
    fun setStreamVolume(userLevel: Int) {
        with(volumeDialogController) {
        with(volumeDialogController) {
Loading