[Search] Resolve afterimage when closing allapps

Preview: https://drive.google.com/file/d/1AM6WAY4kImCgHueNvH6eXUtnHgK3U6vo/view?usp=sharing&resourcekey=0-3mzBobzFuzQXCNZRUlToYA
Test: Manual
Bug: 184711608
Bug: 188556051
Change-Id: Ib43c71083460c236347dd1f340b1ad95d7d4aa15
This commit is contained in:
Samuel Fufa 2021-05-25 15:42:39 -05:00
parent 3350508bb6
commit 41f15a107f
5 changed files with 20 additions and 9 deletions

View File

@ -23,6 +23,7 @@ import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_7;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALL_APPS_EDU_SHOWN;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE;
import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
@ -58,6 +59,9 @@ import com.android.quickstep.util.MultiValueUpdateListener;
*/
public class AllAppsEduView extends AbstractFloatingView {
private static final float HINT_PROG_SCRIM_THRESHOLD = 0.06f;
private static final float HINT_PROG_CONTENT_THRESHOLD = 0.08f;
private Launcher mLauncher;
private AnimatorSet mAnimation;
@ -143,7 +147,9 @@ public class AllAppsEduView extends AbstractFloatingView {
StateAnimationConfig config = new StateAnimationConfig();
config.setInterpolator(ANIM_ALL_APPS_FADE, Interpolators.clampToProgress(ACCEL,
0, 0.08f));
HINT_PROG_SCRIM_THRESHOLD, HINT_PROG_CONTENT_THRESHOLD));
config.setInterpolator(ANIM_SCRIM_FADE,
Interpolators.clampToProgress(ACCEL, 0, HINT_PROG_CONTENT_THRESHOLD));
config.duration = secondPart;
config.userControlled = false;
AnimatorPlaybackController stateAnimationController =
@ -153,6 +159,8 @@ public class AllAppsEduView extends AbstractFloatingView {
AllAppsTransitionController allAppsController = mLauncher.getAllAppsController();
PendingAnimation allAppsAlpha = new PendingAnimation(config.duration);
allAppsController.setAlphas(ALL_APPS, config, allAppsAlpha);
mLauncher.getWorkspace().getStateTransitionAnimation().setScrim(allAppsAlpha, ALL_APPS,
config);
mAnimation.play(allAppsAlpha.buildAnim());
ValueAnimator intro = ValueAnimator.ofFloat(0, 1f);
@ -219,11 +227,11 @@ public class AllAppsEduView extends AbstractFloatingView {
int accentColor = Themes.getColorAccent(launcher);
mGradient = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,
Themes.getAttrBoolean(launcher, R.attr.isMainColorDark)
? new int[] {0xB3FFFFFF, 0x00FFFFFF}
: new int[] {ColorUtils.setAlphaComponent(accentColor, 127),
? new int[]{0xB3FFFFFF, 0x00FFFFFF}
: new int[]{ColorUtils.setAlphaComponent(accentColor, 127),
ColorUtils.setAlphaComponent(accentColor, 0)});
float r = mWidthPx / 2f;
mGradient.setCornerRadii(new float[] {r, r, r, r, 0, 0, 0, 0});
mGradient.setCornerRadii(new float[]{r, r, r, r, 0, 0, 0, 0});
int top = mMaxHeightPx - mCircleSizePx + mPaddingPx;
mCircle.setBounds(mPaddingPx, top, mPaddingPx + mCircleSizePx, top + mCircleSizePx);

View File

@ -27,6 +27,7 @@ import static com.android.launcher3.LauncherState.HINT_STATE;
import static com.android.launcher3.LauncherState.HOTSEAT_ICONS;
import static com.android.launcher3.LauncherState.NORMAL;
import static com.android.launcher3.LauncherState.WORKSPACE_PAGE_INDICATOR;
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
import static com.android.launcher3.anim.Interpolators.LINEAR;
import static com.android.launcher3.anim.Interpolators.ZOOM_OUT;
import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER;
@ -168,7 +169,7 @@ public class WorkspaceStateTransitionAnimation {
propertySetter.setViewBackgroundColor(mLauncher.getScrimView(),
state.getWorkspaceScrimColor(mLauncher),
config.getInterpolator(ANIM_SCRIM_FADE, LINEAR));
config.getInterpolator(ANIM_SCRIM_FADE, ACCEL_2));
}
public void applyChildState(LauncherState state, CellLayout cl, int childIndex) {

View File

@ -134,7 +134,6 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
private int mHeaderColor;
public AllAppsContainerView(Context context) {
this(context, null);
}
@ -842,7 +841,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
* redraws header protection
*/
public void invalidateHeader() {
if (mScrimView != null) {
if (mScrimView != null && FeatureFlags.ENABLE_DEVICE_SEARCH.get()) {
mScrimView.invalidate();
}
}

View File

@ -37,6 +37,7 @@ import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.AnimatorListeners;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.anim.PendingAnimation;
import com.android.launcher3.anim.PropertySetter;
import com.android.launcher3.config.FeatureFlags;
@ -56,6 +57,7 @@ import com.android.launcher3.views.ScrimView;
*/
public class AllAppsTransitionController
implements StateHandler<LauncherState>, OnDeviceProfileChangeListener {
private static final float CONTENT_VISIBLE_MAX_THRESHOLD = 0.5f;
public static final FloatProperty<AllAppsTransitionController> ALL_APPS_PROGRESS =
new FloatProperty<AllAppsTransitionController>("allAppsProgress") {
@ -177,7 +179,8 @@ public class AllAppsTransitionController
int visibleElements = state.getVisibleElements(mLauncher);
boolean hasAllAppsContent = (visibleElements & ALL_APPS_CONTENT) != 0;
Interpolator allAppsFade = config.getInterpolator(ANIM_ALL_APPS_FADE, LINEAR);
Interpolator allAppsFade = config.getInterpolator(ANIM_ALL_APPS_FADE,
Interpolators.clampToProgress(LINEAR, 0, CONTENT_VISIBLE_MAX_THRESHOLD));
setter.setViewAlpha(mAppsView, hasAllAppsContent ? 1 : 0, allAppsFade);
boolean shouldProtectHeader =

View File

@ -299,7 +299,7 @@ public class FloatingHeaderView extends LinearLayout implements
@Override
protected void dispatchDraw(Canvas canvas) {
if (mHeaderCollapsed && !mCollapsed && mTabLayout.getVisibility() == VISIBLE
&& mHeaderColor != Color.TRANSPARENT) {
&& mHeaderColor != Color.TRANSPARENT && FeatureFlags.ENABLE_DEVICE_SEARCH.get()) {
mBGPaint.setColor(mHeaderColor);
mBGPaint.setAlpha((int) (255 * mHeaderAnimator.getAnimatedFraction()));
canvas.drawRect(0, 0, getWidth(), getHeight() + mTranslationY, mBGPaint);