Use MultiValueAlpha in ClearAllButton
Bug: 389209338
Flag: EXEMPT refactor
Test: m
Change-Id: Ia6f3f9059444161829c76373b80b354a155fd69d
diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt
index 04e1905..b230fa6 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt
+++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.kt
@@ -38,7 +38,6 @@
import com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW
import com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE
import com.android.quickstep.util.AnimUtils
-import com.android.quickstep.views.ClearAllButton
import com.android.quickstep.views.RecentsView
import com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET
import com.android.quickstep.views.RecentsView.CONTENT_ALPHA
@@ -288,8 +287,8 @@
val clearAllButtonAlpha =
if (state.areElementsVisible(launcher, LauncherState.CLEAR_ALL_BUTTON)) 1f else 0f
propertySetter.setFloat(
- recentsView.clearAllButton,
- ClearAllButton.VISIBILITY_ALPHA,
+ recentsView.clearAllButton.visibilityAlphaProperty,
+ MULTI_PROPERTY_VALUE,
clearAllButtonAlpha,
LINEAR,
)
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
index 537092f..51f2a33 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
@@ -52,7 +52,6 @@
import com.android.launcher3.anim.PropertySetter;
import com.android.launcher3.statemanager.StateManager.StateHandler;
import com.android.launcher3.states.StateAnimationConfig;
-import com.android.quickstep.views.ClearAllButton;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.RecentsViewContainer;
@@ -98,8 +97,8 @@
private void setProperties(RecentsState state, StateAnimationConfig config,
PropertySetter setter) {
float clearAllButtonAlpha = state.hasClearAllButton() ? 1 : 0;
- setter.setFloat(mRecentsView.getClearAllButton(), ClearAllButton.VISIBILITY_ALPHA,
- clearAllButtonAlpha, LINEAR);
+ setter.setFloat(mRecentsView.getClearAllButton().visibilityAlphaProperty,
+ MULTI_PROPERTY_VALUE, clearAllButtonAlpha, LINEAR);
if (mRecentsView.getAddDeskButton() != null) {
float addDeskButtonAlpha = state.hasAddDeskButton() ? 1 : 0;
setter.setFloat(mRecentsView.getAddDeskButton().getVisibilityAlphaProperty(),
diff --git a/quickstep/src/com/android/quickstep/views/ClearAllButton.kt b/quickstep/src/com/android/quickstep/views/ClearAllButton.kt
index ef62597..6420ece 100644
--- a/quickstep/src/com/android/quickstep/views/ClearAllButton.kt
+++ b/quickstep/src/com/android/quickstep/views/ClearAllButton.kt
@@ -19,10 +19,12 @@
import android.graphics.Canvas
import android.graphics.Rect
import android.util.AttributeSet
-import android.util.FloatProperty
+import android.view.View
import android.widget.Button
import com.android.launcher3.Flags.enableFocusOutline
import com.android.launcher3.R
+import com.android.launcher3.util.MultiPropertyFactory
+import com.android.launcher3.util.MultiValueAlpha
import com.android.quickstep.util.BorderAnimator
import com.android.quickstep.util.BorderAnimator.Companion.createSimpleBorderAnimator
import kotlin.math.abs
@@ -31,29 +33,46 @@
class ClearAllButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
Button(context, attrs) {
- var scrollAlpha = 1f
- set(value) {
- field = value
- updateAlpha()
+ private enum class Alpha {
+ SCROLL,
+ CONTENT,
+ VISIBILITY,
+ DISMISS,
+ }
+
+ private val clearAllButtonAlpha =
+ object : MultiValueAlpha(this, Alpha.entries.size) {
+ override fun apply(value: Float) {
+ super.apply(value)
+ isClickable = value >= 1f
+ }
}
- var contentAlpha = 1f
+ var scrollAlpha
set(value) {
- field = value
- updateAlpha()
+ clearAllButtonAlpha.get(Alpha.SCROLL.ordinal).value = value
}
+ get() = clearAllButtonAlpha.get(Alpha.SCROLL.ordinal).value
- var visibilityAlpha = 1f
+ var contentAlpha
set(value) {
- field = value
- updateAlpha()
+ clearAllButtonAlpha.get(Alpha.CONTENT.ordinal).value = value
}
+ get() = clearAllButtonAlpha.get(Alpha.CONTENT.ordinal).value
- var dismissAlpha = 1f
+ @JvmField
+ val visibilityAlphaProperty: MultiPropertyFactory<View>.MultiProperty =
+ clearAllButtonAlpha.get(Alpha.VISIBILITY.ordinal)
+
+ var dismissAlpha
set(value) {
- field = value
- updateAlpha()
+ dismissAlphaProperty.value = value
}
+ get() = dismissAlphaProperty.value
+
+ @JvmField
+ val dismissAlphaProperty: MultiPropertyFactory<View>.MultiProperty =
+ clearAllButtonAlpha.get(Alpha.DISMISS.ordinal)
var fullscreenProgress = 1f
set(value) {
@@ -198,12 +217,6 @@
)
}
- private fun updateAlpha() {
- val alpha = scrollAlpha * contentAlpha * visibilityAlpha * dismissAlpha
- this.alpha = alpha
- isClickable = alpha >= 1f
- }
-
fun getScrollAdjustment(fullscreenEnabled: Boolean, gridEnabled: Boolean): Float {
var scrollAdjustment = 0f
if (fullscreenEnabled) {
@@ -244,26 +257,4 @@
if (fullscreenProgress > 0) endTranslation else 0f
private fun getGridTrans(endTranslation: Float) = if (gridProgress > 0) endTranslation else 0f
-
- companion object {
- @JvmField
- val VISIBILITY_ALPHA: FloatProperty<ClearAllButton> =
- object : FloatProperty<ClearAllButton>("visibilityAlpha") {
- override fun setValue(clearAllButton: ClearAllButton, value: Float) {
- clearAllButton.visibilityAlpha = value
- }
-
- override fun get(clearAllButton: ClearAllButton) = clearAllButton.visibilityAlpha
- }
-
- @JvmField
- val DISMISS_ALPHA: FloatProperty<ClearAllButton> =
- object : FloatProperty<ClearAllButton>("dismissAlpha") {
- override fun setValue(clearAllButton: ClearAllButton, value: Float) {
- clearAllButton.dismissAlpha = value
- }
-
- override fun get(clearAllButton: ClearAllButton) = clearAllButton.dismissAlpha
- }
- }
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 6b91df1..983c393 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -66,7 +66,6 @@
import static com.android.quickstep.BaseContainerInterface.getTaskDimension;
import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
import static com.android.quickstep.util.LogUtils.splitFailureMessage;
-import static com.android.quickstep.views.ClearAllButton.DISMISS_ALPHA;
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_ACTIONS_IN_MENU;
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_DESKTOP;
import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NON_ZERO_ROTATION;
@@ -3962,7 +3961,8 @@
// Change alpha of clear all if translating grid to hide it
if (isClearAllHidden) {
- anim.setFloat(mClearAllButton, DISMISS_ALPHA, 0, LINEAR);
+ anim.setFloat(mClearAllButton.dismissAlphaProperty, MULTI_PROPERTY_VALUE, 0,
+ LINEAR);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {