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

Commit fc3e8ba5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Apply alpha to status bar during unfold"

parents 3430e758 8188445d
Loading
Loading
Loading
Loading
+27 −8
Original line number Diff line number Diff line
@@ -42,7 +42,9 @@ class UnfoldMoveFromCenterAnimator @JvmOverloads constructor(
     * are different than actual bounds (e.g. view container may
     * have larger width than width of the items in the container)
     */
    private val viewCenterProvider: ViewCenterProvider = object : ViewCenterProvider {}
    private val viewCenterProvider: ViewCenterProvider = object : ViewCenterProvider {},
    /** Allows to set the alpha based on the progress. */
    private val alphaProvider: AlphaProvider? = null
) : UnfoldTransitionProgressProvider.TransitionProgressListener {

    private val screenSize = Point()
@@ -99,15 +101,25 @@ class UnfoldMoveFromCenterAnimator @JvmOverloads constructor(

    override fun onTransitionProgress(progress: Float) {
        animatedViews.forEach {
            it.view.get()?.let { view ->
            it.applyTransition(progress)
            it.applyAlpha(progress)
        }
        lastAnimationProgress = progress
    }

    private fun AnimatedView.applyTransition(progress: Float) {
        view.get()?.let { view ->
            translationApplier.apply(
                view = view,
                    x = it.startTranslationX * (1 - progress),
                    y = it.startTranslationY * (1 - progress)
                x = startTranslationX * (1 - progress),
                y = startTranslationY * (1 - progress)
            )
        }
    }
        lastAnimationProgress = progress

    private fun AnimatedView.applyAlpha(progress: Float) {
        if (alphaProvider == null) return
        view.get()?.alpha = alphaProvider.getAlpha(progress)
    }

    private fun createAnimatedView(view: View): AnimatedView =
@@ -146,6 +158,13 @@ class UnfoldMoveFromCenterAnimator @JvmOverloads constructor(
        }
    }

    /** Allows to set a custom alpha based on the progress. */
    interface AlphaProvider {

        /** Returns the alpha views should have at a given progress. */
        fun getAlpha(progress: Float): Float
    }

    /**
     * Interface that allows to use custom logic to get the center of the view
     */
+23 −25
Original line number Diff line number Diff line
@@ -49,7 +49,8 @@ class PhoneStatusBarViewController private constructor(
    }

    override fun onViewAttached() {
        moveFromCenterAnimationController?.let { animationController ->
        if (moveFromCenterAnimationController == null) return

        val statusBarLeftSide: View = mView.findViewById(R.id.status_bar_left_side)
        val systemIconArea: ViewGroup = mView.findViewById(R.id.system_icon_area)

@@ -61,7 +62,7 @@ class PhoneStatusBarViewController private constructor(
        mView.viewTreeObserver.addOnPreDrawListener(object :
            ViewTreeObserver.OnPreDrawListener {
            override fun onPreDraw(): Boolean {
                    animationController.onViewsReady(viewsToAnimate)
                moveFromCenterAnimationController.onViewsReady(viewsToAnimate)
                mView.viewTreeObserver.removeOnPreDrawListener(this)
                return true
            }
@@ -73,7 +74,6 @@ class PhoneStatusBarViewController private constructor(
                moveFromCenterAnimationController.onStatusBarWidthChanged()
            }
        }
        }

        progressProvider?.setReadyToHandleTransition(true)
        configurationController.addCallback(configurationListener)
@@ -162,9 +162,7 @@ class PhoneStatusBarViewController private constructor(
            PhoneStatusBarViewController(
                view,
                progressProvider.getOrNull(),
                unfoldComponent.map {
                    it.getStatusBarMoveFromCenterAnimationController()
                }.getOrNull(),
                unfoldComponent.getOrNull()?.getStatusBarMoveFromCenterAnimationController(),
                touchEventHandler,
                configurationController
            )
+18 −2
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@ package com.android.systemui.statusbar.phone
import android.view.View
import android.view.WindowManager
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator
import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator.AlphaProvider
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController.StatusBarViewsCenterProvider
import com.android.systemui.unfold.SysUIUnfoldScope
import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import javax.inject.Inject
import kotlin.math.max

@SysUIUnfoldScope
class StatusBarMoveFromCenterAnimationController @Inject constructor(
@@ -31,8 +33,11 @@ class StatusBarMoveFromCenterAnimationController @Inject constructor(
) {

    private val transitionListener = TransitionListener()
    private val moveFromCenterAnimator = UnfoldMoveFromCenterAnimator(windowManager,
        viewCenterProvider = StatusBarViewsCenterProvider())
    private val moveFromCenterAnimator = UnfoldMoveFromCenterAnimator(
        windowManager,
        viewCenterProvider = StatusBarViewsCenterProvider(),
        alphaProvider = StatusBarIconsAlphaProvider()
    )

    fun onViewsReady(viewsToAnimate: Array<View>) {
        moveFromCenterAnimator.updateDisplayProperties()
@@ -65,4 +70,15 @@ class StatusBarMoveFromCenterAnimationController @Inject constructor(
            moveFromCenterAnimator.onTransitionProgress(1f)
        }
    }

    private class StatusBarIconsAlphaProvider : AlphaProvider {
        override fun getAlpha(progress: Float): Float {
            return max(
                0f,
                (progress - ICONS_START_APPEARING_PROGRESS) / (1 - ICONS_START_APPEARING_PROGRESS)
            )
        }
    }
}

private const val ICONS_START_APPEARING_PROGRESS = 0.75F