summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2019-06-17 22:34:33 -0700
committerWinson Chung <winsonc@google.com>2019-06-26 14:01:56 -0700
commit0b70cd4ca4bf56e6afba243e60029f5791868047 (patch)
treecd15338cdce893f03969a202fa398ae14f4f2754 /src
parenta730a233b8b5d70ae535cd18a9084626253dfb9b (diff)
downloadandroid_packages_apps_Trebuchet-0b70cd4ca4bf56e6afba243e60029f5791868047.tar.gz
android_packages_apps_Trebuchet-0b70cd4ca4bf56e6afba243e60029f5791868047.tar.bz2
android_packages_apps_Trebuchet-0b70cd4ca4bf56e6afba243e60029f5791868047.zip
Finish recents animation when starting a new activity
- Defer starting the activity when an activity is paused, and finish the current animation to trigger launcher to be resumed Bug: 132811175 Test: Swipe up and launch a new app Change-Id: I78b76800052512eb93f69ccf0523f4d752a82ece
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java27
-rw-r--r--src/com/android/launcher3/SecondaryDropTarget.java2
2 files changed, 20 insertions, 9 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index ad2783e0c..d9af4da8e 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -244,7 +244,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
@Thunk boolean mWorkspaceLoading = true;
- private OnResumeCallback mOnResumeCallback;
+ private ArrayList<OnResumeCallback> mOnResumeCallbacks = new ArrayList<>();
private ViewOnDrawExecutor mPendingExecutor;
@@ -869,6 +869,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
@Override
protected void onStop() {
super.onStop();
+
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onStop();
}
@@ -951,7 +952,10 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
mHandler.removeCallbacks(mHandleDeferredResume);
Utilities.postAsyncCallback(mHandler, mHandleDeferredResume);
- setOnResumeCallback(null);
+ for (OnResumeCallback cb : mOnResumeCallbacks) {
+ cb.onLauncherResume();
+ }
+ mOnResumeCallbacks.clear();
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onResume();
@@ -1805,6 +1809,16 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
android.util.Log.d(TestProtocol.NO_START_TAG,
"startActivitySafely outer");
}
+
+ if (!hasBeenResumed()) {
+ // Workaround an issue where the WM launch animation is clobbered when finishing the
+ // recents animation into launcher. Defer launching the activity until Launcher is
+ // next resumed.
+ addOnResumeCallback(() -> startActivitySafely(v, intent, item, sourceContainer));
+ UiFactory.clearSwipeSharedState(true /* finishAnimation */);
+ return true;
+ }
+
boolean success = super.startActivitySafely(v, intent, item, sourceContainer);
if (success && v instanceof BubbleTextView) {
// This is set to the view that launched the activity that navigated the user away
@@ -1813,7 +1827,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
// state when we return to launcher.
BubbleTextView btv = (BubbleTextView) v;
btv.setStayPressed(true);
- setOnResumeCallback(btv);
+ addOnResumeCallback(btv);
}
return success;
}
@@ -1861,11 +1875,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
return result;
}
- public void setOnResumeCallback(OnResumeCallback callback) {
- if (mOnResumeCallback != null) {
- mOnResumeCallback.onLauncherResume();
- }
- mOnResumeCallback = callback;
+ public void addOnResumeCallback(OnResumeCallback callback) {
+ mOnResumeCallbacks.add(callback);
}
/**
diff --git a/src/com/android/launcher3/SecondaryDropTarget.java b/src/com/android/launcher3/SecondaryDropTarget.java
index 0cf6e44c6..55cb6f214 100644
--- a/src/com/android/launcher3/SecondaryDropTarget.java
+++ b/src/com/android/launcher3/SecondaryDropTarget.java
@@ -179,7 +179,7 @@ public class SecondaryDropTarget extends ButtonDropTarget implements OnAlarmList
DeferredOnComplete deferred = (DeferredOnComplete) d.dragSource;
if (target != null) {
deferred.mPackageName = target.getPackageName();
- mLauncher.setOnResumeCallback(deferred);
+ mLauncher.addOnResumeCallback(deferred);
} else {
deferred.sendFailure();
}