diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java index 623e23412d..b4b83f6f24 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java @@ -19,15 +19,21 @@ import android.content.Context; import android.util.AttributeSet; import android.view.View; +import androidx.annotation.Nullable; + import com.android.launcher3.R; import com.android.launcher3.allapps.ActivityAllAppsContainerView; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext; +import java.util.Optional; + /** All apps container accessible from taskbar. */ public class TaskbarAllAppsContainerView extends ActivityAllAppsContainerView { + private @Nullable OnInvalidateHeaderListener mOnInvalidateHeaderListener; + public TaskbarAllAppsContainerView(Context context, AttributeSet attrs) { this(context, attrs, 0); } @@ -36,6 +42,10 @@ public class TaskbarAllAppsContainerView extends super(context, attrs, defStyleAttr); } + void setOnInvalidateHeaderListener(OnInvalidateHeaderListener onInvalidateHeaderListener) { + mOnInvalidateHeaderListener = onInvalidateHeaderListener; + } + @Override protected View inflateSearchBox() { if (isSearchSupported()) { @@ -53,6 +63,13 @@ public class TaskbarAllAppsContainerView extends return searchView; } + @Override + public void invalidateHeader() { + super.invalidateHeader(); + Optional.ofNullable(mOnInvalidateHeaderListener).ifPresent( + OnInvalidateHeaderListener::onInvalidateHeader); + } + @Override protected boolean isSearchSupported() { return FeatureFlags.ENABLE_ALL_APPS_SEARCH_IN_TASKBAR.get(); @@ -63,4 +80,8 @@ public class TaskbarAllAppsContainerView extends // All apps is always open return true; } + + interface OnInvalidateHeaderListener { + void onInvalidateHeader(); + } } diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java index d69769a8a4..966e5b1fa2 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java @@ -19,6 +19,7 @@ import static com.android.launcher3.anim.Interpolators.EMPHASIZED; import android.animation.PropertyValuesHolder; import android.content.Context; +import android.graphics.Canvas; import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; @@ -109,12 +110,13 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView protected void updateBackground(DeviceProfile deviceProfile) { mBottomSheetBackground.setVisibility(deviceProfile.isTablet ? View.VISIBLE : View.GONE); // Note: For tablets, the opaque background and header protection are added in drawOnScrim. - // For the taskbar entrypoint, the scrim is drawn differently, so a static background is - // added in TaskbarAllAppsContainerView and header protection is not yet supported. + // For the taskbar entrypoint, the scrim is drawn by its abstract slide in view container, + // so its header protection is derived from this scrim instead. } private void onAppsUpdated() { diff --git a/src/com/android/launcher3/views/AbstractSlideInView.java b/src/com/android/launcher3/views/AbstractSlideInView.java index 57305827ef..5f0683efe0 100644 --- a/src/com/android/launcher3/views/AbstractSlideInView.java +++ b/src/com/android/launcher3/views/AbstractSlideInView.java @@ -99,7 +99,7 @@ public abstract class AbstractSlideInView protected @Nullable OnCloseListener mOnCloseBeginListener; protected List mOnCloseListeners = new ArrayList<>(); - private final AnimatedFloat mSlideInViewScale = + protected final AnimatedFloat mSlideInViewScale = new AnimatedFloat(this::onScaleProgressChanged, VIEW_NO_SCALE); protected boolean mIsBackProgressing; @Nullable private Drawable mContentBackground;