Merge "Adding all-tasks dismiss animation" into ub-launcher3-edmonton
diff --git a/quickstep/libs/sysui_shared.jar b/quickstep/libs/sysui_shared.jar
index d2989ef..0adc83a 100644
--- a/quickstep/libs/sysui_shared.jar
+++ b/quickstep/libs/sysui_shared.jar
Binary files differ
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index 0185ab9..3c47eec 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -226,6 +226,14 @@
}
@Override
+ protected void onStop() {
+ super.onStop();
+
+ // Workaround for b/78520668, explicitly trim memory once UI is hidden
+ UiFactory.onTrimMemory(this, TRIM_MEMORY_UI_HIDDEN);
+ }
+
+ @Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
UiFactory.onTrimMemory(this, level);
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java b/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java
index ebe2311..4ba9e02 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java
@@ -115,4 +115,15 @@
}
});
}
+
+ public void hideCurrentInputMethod() {
+ BackgroundExecutor.get().submit(() -> {
+ synchronized (this) {
+ TraceHelper.partitionSection("RecentsController", "Hiding currentinput method");
+ if (controller != null) {
+ controller.hideCurrentInputMethod();
+ }
+ }
+ });
+ }
}
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index ed7b7ab..7849f8c 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -521,6 +521,7 @@
notifyGestureStartedAsync();
setStateOnUiThread(STATE_GESTURE_STARTED);
mGestureStarted = true;
+ mRecentsAnimationWrapper.hideCurrentInputMethod();
mRecentsAnimationWrapper.enableInputConsumer();
ActivityManagerWrapper.getInstance().closeSystemWindows(
CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 9ed9fce..1285a2b 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -737,6 +737,8 @@
NotificationListener.removeNotificationsChangedListener();
getStateManager().moveToRestState();
+ // Workaround for b/78520668, explicitly trim memory once UI is hidden
+ UiFactory.onTrimMemory(this, TRIM_MEMORY_UI_HIDDEN);
}
@Override
@@ -1278,7 +1280,7 @@
}
if (mLauncherCallbacks != null) {
- mLauncherCallbacks.onHomeIntent();
+ mLauncherCallbacks.onHomeIntent(internalStateHandled);
}
}
diff --git a/src/com/android/launcher3/LauncherCallbacks.java b/src/com/android/launcher3/LauncherCallbacks.java
index 35faaea..6aef658 100644
--- a/src/com/android/launcher3/LauncherCallbacks.java
+++ b/src/com/android/launcher3/LauncherCallbacks.java
@@ -50,7 +50,7 @@
void onAttachedToWindow();
void onDetachedFromWindow();
void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args);
- void onHomeIntent();
+ void onHomeIntent(boolean internalStateHandled);
boolean handleBackPressed();
void onTrimMemory(int level);
diff --git a/src/com/android/launcher3/touch/WorkspaceTouchListener.java b/src/com/android/launcher3/touch/WorkspaceTouchListener.java
index 23f55aa..35328dc 100644
--- a/src/com/android/launcher3/touch/WorkspaceTouchListener.java
+++ b/src/com/android/launcher3/touch/WorkspaceTouchListener.java
@@ -71,8 +71,7 @@
int action = ev.getActionMasked();
if (action == ACTION_DOWN) {
// Check if we can handle long press.
- boolean handleLongPress = AbstractFloatingView.getTopOpenView(mLauncher) == null
- && mLauncher.isInState(NORMAL);
+ boolean handleLongPress = canHandleLongPress();
if (handleLongPress) {
// Check if the event is not near the edges
@@ -128,6 +127,11 @@
return result;
}
+ private boolean canHandleLongPress() {
+ return AbstractFloatingView.getTopOpenView(mLauncher) == null
+ && mLauncher.isInState(NORMAL);
+ }
+
private void cancelLongPress() {
mWorkspace.removeCallbacks(this);
mLongPressState = STATE_CANCELLED;
@@ -136,15 +140,19 @@
@Override
public void run() {
if (mLongPressState == STATE_REQUESTED) {
- mLongPressState = STATE_PENDING_PARENT_INFORM;
- mWorkspace.getParent().requestDisallowInterceptTouchEvent(true);
+ if (canHandleLongPress()) {
+ mLongPressState = STATE_PENDING_PARENT_INFORM;
+ mWorkspace.getParent().requestDisallowInterceptTouchEvent(true);
- mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
- HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
- mLauncher.getUserEventDispatcher().logActionOnContainer(Action.Touch.LONGPRESS,
- Action.Direction.NONE, ContainerType.WORKSPACE,
- mWorkspace.getCurrentPage());
- OptionsPopupView.showDefaultOptions(mLauncher, mTouchDownPoint.x, mTouchDownPoint.y);
+ mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
+ HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
+ mLauncher.getUserEventDispatcher().logActionOnContainer(Action.Touch.LONGPRESS,
+ Action.Direction.NONE, ContainerType.WORKSPACE,
+ mWorkspace.getCurrentPage());
+ OptionsPopupView.showDefaultOptions(mLauncher, mTouchDownPoint.x, mTouchDownPoint.y);
+ } else {
+ cancelLongPress();
+ }
}
}
}
diff --git a/src/com/android/launcher3/views/SpringRelativeLayout.java b/src/com/android/launcher3/views/SpringRelativeLayout.java
index 090b3e6..a508191 100644
--- a/src/com/android/launcher3/views/SpringRelativeLayout.java
+++ b/src/com/android/launcher3/views/SpringRelativeLayout.java
@@ -24,7 +24,6 @@
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.EdgeEffectFactory;
import android.util.AttributeSet;
-import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.EdgeEffect;
@@ -58,6 +57,7 @@
private final SpringAnimation mSpring;
private float mDampedScrollShift = 0;
+ private SpringEdgeEffect mActiveEdge;
public SpringRelativeLayout(Context context) {
this(context, null);
@@ -90,6 +90,13 @@
return super.drawChild(canvas, child, drawingTime);
}
+ private void setActiveEdge(SpringEdgeEffect edge) {
+ if (mActiveEdge != edge && mActiveEdge != null) {
+ mActiveEdge.mDistance = 0;
+ }
+ mActiveEdge = edge;
+ }
+
private void setDampedScrollShift(float shift) {
if (shift != mDampedScrollShift) {
mDampedScrollShift = shift;
@@ -144,6 +151,7 @@
@Override
public void onPull(float deltaDistance, float displacement) {
+ setActiveEdge(this);
mDistance += deltaDistance * (mVelocityMultiplier / 3f);
setDampedScrollShift(mDistance * getHeight());
}