From 431f05b3a0cf42cfb5dcb188abafc8d9df69ca90 Mon Sep 17 00:00:00 2001 From: Luca Zuccarini Date: Wed, 21 Sep 2022 14:10:28 +0000 Subject: [PATCH] [Toast] Update A-Z <-> Toast transition for drawable backgrounds. This and the other change in the topic are protected by a new feature flag (included here). Bug: 229297414 Bug: 248006105 Test: manual (see screenshots and recordings in the second bug) Change-Id: I3478d7e194ee5d3bc4f8affdadbec969c033d084 --- .../allapps/SearchTransitionController.java | 44 +++++++++++++++---- .../launcher3/config/FeatureFlags.java | 4 ++ 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/com/android/launcher3/allapps/SearchTransitionController.java b/src/com/android/launcher3/allapps/SearchTransitionController.java index 9c3dab4ec3..495f5c3eff 100644 --- a/src/com/android/launcher3/allapps/SearchTransitionController.java +++ b/src/com/android/launcher3/allapps/SearchTransitionController.java @@ -32,6 +32,7 @@ import android.graphics.drawable.Drawable; import android.util.FloatProperty; import android.util.Log; import android.view.View; +import android.view.ViewGroup; import android.view.animation.Interpolator; import com.android.launcher3.BubbleTextView; @@ -39,6 +40,7 @@ import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; import com.android.launcher3.R; import com.android.launcher3.Utilities; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.model.data.ItemInfo; /** Coordinates the transition between Search and A-Z in All Apps. */ @@ -225,16 +227,35 @@ public class SearchTransitionController { numSearchResultsAnimated++; } - searchResultView.setAlpha(contentAlpha); - // Apply background alpha to decorator if possible. - if (adapterPosition != NO_POSITION) { - searchRecyclerView.getApps().getAdapterItems() - .get(adapterPosition).setDecorationFillAlpha((int) (255 * backgroundAlpha)); - } - // Apply background alpha to view's background (e.g. for Search Edu card). + Drawable background = searchResultView.getBackground(); - if (background != null) { + if (background != null + && searchResultView instanceof ViewGroup + && FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()) { + searchResultView.setAlpha(1f); + + // Apply content alpha to each child, since the view needs to be fully opaque for + // the background to show properly. + ViewGroup searchResultViewGroup = (ViewGroup) searchResultView; + for (int j = 0; j < searchResultViewGroup.getChildCount(); j++) { + searchResultViewGroup.getChildAt(j).setAlpha(contentAlpha); + } + + // Apply background alpha to the background drawable directly. background.setAlpha((int) (255 * backgroundAlpha)); + } else { + searchResultView.setAlpha(contentAlpha); + + // Apply background alpha to decorator if possible. + if (adapterPosition != NO_POSITION) { + searchRecyclerView.getApps().getAdapterItems().get(adapterPosition) + .setDecorationFillAlpha((int) (255 * backgroundAlpha)); + } + + // Apply background alpha to view's background (e.g. for Search Edu card). + if (background != null) { + background.setAlpha((int) (255 * backgroundAlpha)); + } } float scaleY = 1; @@ -304,6 +325,13 @@ public class SearchTransitionController { getSearchRecyclerView().getApps().getAdapterItems().get(adapterPosition) .setDecorationFillAlpha(255); } + if (child instanceof ViewGroup + && FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()) { + ViewGroup childGroup = (ViewGroup) child; + for (int i = 0; i < childGroup.getChildCount(); i++) { + childGroup.getChildAt(i).setAlpha(1f); + } + } if (child.getBackground() != null) { child.getBackground().setAlpha(255); } diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 4287779c31..7b221dcc8a 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -264,6 +264,10 @@ public final class FeatureFlags { public static final BooleanFlag ENABLE_ONE_SEARCH_MOTION = new DeviceFlag( "ENABLE_ONE_SEARCH_MOTION", true, "Enables animations in OneSearch."); + public static final BooleanFlag ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES = new DeviceFlag( + "ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES", false, + "Enable option to replace decorator-based search result backgrounds with drawables"); + public static final BooleanFlag ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS = new DeviceFlag( "ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS", true, "Enable option to show keyboard when going to all-apps");