Moving some swipe up complete logic to when the handler is completed.

Bug: 76449024
Change-Id: I136e665495ab7164c79e1dfa0ef61090ba50fc7a
This commit is contained in:
Sunny Goyal 2018-04-23 11:30:36 -07:00
parent 8b5c7d9315
commit 0bbacc705c
4 changed files with 40 additions and 16 deletions

View File

@ -79,8 +79,6 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
ActivityInitListener createActivityInitListener(BiPredicate<T, Boolean> onInitListener);
void onOverviewShown(T activity);
@Nullable
T getCreatedActivity();
@ -150,6 +148,7 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
public void onSwipeUpComplete(Launcher activity) {
// Re apply state in case we did something funky during the transition.
activity.getStateManager().reapplyState();
DiscoveryBounce.showForOverviewIfNeeded(activity);
}
@Override
@ -213,11 +212,6 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
return new LauncherInitListener(onInitListener);
}
@Override
public void onOverviewShown(Launcher launcher) {
DiscoveryBounce.showForOverviewIfNeeded(launcher);
}
@Nullable
@Override
public Launcher getCreatedActivity() {
@ -372,11 +366,6 @@ public interface ActivityControlHelper<T extends BaseDraggingActivity> {
return new RecentsActivityTracker(onInitListener);
}
@Override
public void onOverviewShown(RecentsActivity activity) {
// Do nothing.
}
@Nullable
@Override
public RecentsActivity getCreatedActivity() {

View File

@ -694,9 +694,6 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
// If we haven't posted the transition end runnable, run it now
finishTransitionRunnable.run();
}
RecentsModel.getInstance(mContext).onOverviewShown(false, TAG);
mActivityControlHelper.onOverviewShown(mActivity);
doLogGesture(true /* toLauncher */);
}
private void setupLauncherUiAfterSwipeUpAnimation() {
@ -708,9 +705,11 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
// Animate the first icon.
mRecentsView.setFirstTaskIconScaledDown(false /* isScaledDown */, true /* animate */);
mRecentsView.setSwipeDownShouldLaunchApp(true);
RecentsModel.getInstance(mContext).onOverviewShown(false, TAG);
doLogGesture(true /* toLauncher */);
reset();
}

View File

@ -27,6 +27,7 @@ import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.TimeInterpolator;
import android.app.ActivityManager;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.animation.PathInterpolator;
@ -34,12 +35,15 @@ import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.Launcher;
import com.android.launcher3.R;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.states.InternalStateHandler;
/**
* Abstract base class of floating view responsible for showing discovery bounce animation
*/
public class DiscoveryBounce extends AbstractFloatingView {
private static final long DELAY_MS = 200;
public static final String HOME_BOUNCE_SEEN = "launcher.apps_view_shown";
public static final String SHELF_BOUNCE_SEEN = "launcher.shelf_bounce_seen";
@ -102,6 +106,10 @@ public class DiscoveryBounce extends AbstractFloatingView {
}
public static void showForHomeIfNeeded(Launcher launcher) {
showForHomeIfNeeded(launcher, true);
}
private static void showForHomeIfNeeded(Launcher launcher, boolean withDelay) {
if (!launcher.isInState(NORMAL)
|| launcher.getSharedPrefs().getBoolean(HOME_BOUNCE_SEEN, false)
|| AbstractFloatingView.getTopOpenView(launcher) != null
@ -110,6 +118,11 @@ public class DiscoveryBounce extends AbstractFloatingView {
return;
}
if (withDelay) {
new Handler().postDelayed(() -> showForHomeIfNeeded(launcher, false), DELAY_MS);
return;
}
DiscoveryBounce view = new DiscoveryBounce(launcher,
AnimatorInflater.loadAnimator(launcher, R.animator.discovery_bounce));
view.mIsOpen = true;
@ -117,7 +130,13 @@ public class DiscoveryBounce extends AbstractFloatingView {
}
public static void showForOverviewIfNeeded(Launcher launcher) {
showForOverviewIfNeeded(launcher, true);
}
private static void showForOverviewIfNeeded(Launcher launcher, boolean withDelay) {
if (!launcher.isInState(OVERVIEW)
|| !launcher.hasBeenResumed()
|| launcher.isForceInvisible()
|| launcher.getDeviceProfile().isVerticalBarLayout()
|| launcher.getSharedPrefs().getBoolean(SHELF_BOUNCE_SEEN, false)
|| UserManagerCompat.getInstance(launcher).isDemoUser()
@ -125,6 +144,15 @@ public class DiscoveryBounce extends AbstractFloatingView {
return;
}
if (withDelay) {
new Handler().postDelayed(() -> showForOverviewIfNeeded(launcher, false), DELAY_MS);
return;
} else if (InternalStateHandler.hasPending()
|| AbstractFloatingView.getTopOpenView(launcher) != null) {
// TODO: Move these checks to the top and call this method after invalidate handler.
return;
}
float verticalProgress = OVERVIEW.getVerticalProgress(launcher);
TimeInterpolator pathInterpolator = new PathInterpolator(0.35f, 0, 0.5f, 1);

View File

@ -60,6 +60,10 @@ public abstract class InternalStateHandler extends Binder {
return sScheduler.clearReference(this);
}
public static boolean hasPending() {
return sScheduler.hasPending();
}
public static boolean handleCreate(Launcher launcher, Intent intent) {
return handleIntent(launcher, intent, false, false);
}
@ -132,5 +136,9 @@ public abstract class InternalStateHandler extends Binder {
}
return false;
}
public boolean hasPending() {
return mPendingHandler.get() != null;
}
}
}