summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Miranda <jonmiranda@google.com>2019-07-02 21:35:11 (GMT)
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-07-18 04:10:15 (GMT)
commit0473dcee070b9ea827d32bfd998a0c7cc19a0312 (patch)
tree465c69a388bbfa340cdcab5a08bf7576dde666d4
parent6a2718b24144d53908ff5f9e565a3c642762bbd7 (diff)
downloadandroid_packages_apps_Trebuchet-0473dcee070b9ea827d32bfd998a0c7cc19a0312.zip
android_packages_apps_Trebuchet-0473dcee070b9ea827d32bfd998a0c7cc19a0312.tar.gz
android_packages_apps_Trebuchet-0473dcee070b9ea827d32bfd998a0c7cc19a0312.tar.bz2
Fix bug where icon is no present during app close animation.
* WindowTransformSwipeHandler closes all AbstractFloatingViews, including ListenerView, which results in FloatingIconView getting removed. * In IconLoadResult.onIconLoaded, we remove the check for isIconLoaded since its not needed. This was also causing a race condition since isIconLoaded is not set to true until after we tell onIconLoaded to run. * In BaseDragLayer, we have a delay before checking if the view is open and then closing the floating view if true. This caused issues since we reycle the view. Now we check if the view is open before running the delay to call close. Bug: 136044361 Change-Id: I7442a589a62c3cdf90b70d146e0ecf3e4300ddf7 (cherry picked from commit 826cdcd32fa91afe932c8c07be1a4e92a6f73301) (cherry picked from commit bc2782647803d2a8942311f917d66a91bdc24d8d)
-rw-r--r--quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java3
-rw-r--r--src/com/android/launcher3/views/BaseDragLayer.java10
-rw-r--r--src/com/android/launcher3/views/FloatingIconView.java10
3 files changed, 11 insertions, 12 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
index f1d1141..ac7ba3f 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -505,7 +505,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
initAnimFactory.run();
}
}
- AbstractFloatingView.closeAllOpenViews(activity, mWasLauncherAlreadyVisible);
+ AbstractFloatingView.closeAllOpenViewsExcept(activity, mWasLauncherAlreadyVisible,
+ AbstractFloatingView.TYPE_LISTENER);
if (mWasLauncherAlreadyVisible) {
mStateCallback.setState(STATE_LAUNCHER_DRAWN);
diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java
index c1ba780..15f2724 100644
--- a/src/com/android/launcher3/views/BaseDragLayer.java
+++ b/src/com/android/launcher3/views/BaseDragLayer.java
@@ -221,12 +221,10 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
if (child instanceof AbstractFloatingView) {
// Handles the case where the view is removed without being properly closed.
// This can happen if something goes wrong during a state change/transition.
- postDelayed(() -> {
- AbstractFloatingView floatingView = (AbstractFloatingView) child;
- if (floatingView.isOpen()) {
- floatingView.close(false);
- }
- }, SINGLE_FRAME_MS);
+ AbstractFloatingView floatingView = (AbstractFloatingView) child;
+ if (floatingView.isOpen()) {
+ postDelayed(() -> floatingView.close(false), SINGLE_FRAME_MS);
+ }
}
}
diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java
index b6c4fed..ab4b576 100644
--- a/src/com/android/launcher3/views/FloatingIconView.java
+++ b/src/com/android/launcher3/views/FloatingIconView.java
@@ -574,17 +574,17 @@ public class FloatingIconView extends View implements
if (cancellationSignal.isCanceled()) {
return;
}
- if (mIconLoadResult.isIconLoaded) {
- setIcon(originalView, mIconLoadResult.drawable, mIconLoadResult.badge,
- mIconLoadResult.iconOffset);
- }
+
+ setIcon(originalView, mIconLoadResult.drawable, mIconLoadResult.badge,
+ mIconLoadResult.iconOffset);
+
// Delay swapping views until the icon is loaded to prevent a flash.
setVisibility(VISIBLE);
originalView.setVisibility(INVISIBLE);
};
+ mLoadIconSignal = cancellationSignal;
}
}
- mLoadIconSignal = cancellationSignal;
}
private void setBackgroundDrawableBounds(float scale) {