diff --git a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java index 62e76d802f..1fb2f79983 100644 --- a/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java +++ b/quickstep/src/com/android/launcher3/LauncherAppTransitionManagerImpl.java @@ -33,7 +33,6 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.Rect; -import android.media.midi.MidiManager.OnDeviceOpenedListener; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -118,6 +117,14 @@ public class LauncherAppTransitionManagerImpl extends LauncherAppTransitionManag mCurrentAnimator = animator; } + @Override + public void finishAnimation() { + if (mCurrentAnimator != null && mCurrentAnimator.isRunning()) { + mCurrentAnimator.end(); + } + mCurrentAnimator = null; + } + /** * @return A Bundle with remote animations that controls how the window of the opening * targets are displayed. diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 7595793140..fd9b61a271 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -20,7 +20,6 @@ import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION; import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; - import static com.android.launcher3.ItemInfoWithIcon.FLAG_DISABLED_BY_PUBLISHER; import static com.android.launcher3.ItemInfoWithIcon.FLAG_DISABLED_LOCKED_USER; import static com.android.launcher3.ItemInfoWithIcon.FLAG_DISABLED_QUIET_USER; @@ -40,7 +39,6 @@ import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.annotation.TargetApi; -import android.app.ActivityOptions; import android.app.AlertDialog; import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetManager; @@ -55,14 +53,12 @@ import android.content.IntentFilter; import android.content.IntentSender; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.sqlite.SQLiteDatabase; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; -import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; @@ -446,6 +442,10 @@ public class Launcher extends BaseActivity return mStateManager; } + public LauncherAppTransitionManager getAppTransitionManager() { + return mAppTransitionManager; + } + protected void overrideTheme(boolean isDark, boolean supportsDarkText) { if (isDark) { setTheme(R.style.LauncherThemeDark); diff --git a/src/com/android/launcher3/LauncherAppTransitionManager.java b/src/com/android/launcher3/LauncherAppTransitionManager.java index be2dc54ed3..c0d52c1c19 100644 --- a/src/com/android/launcher3/LauncherAppTransitionManager.java +++ b/src/com/android/launcher3/LauncherAppTransitionManager.java @@ -64,4 +64,8 @@ public class LauncherAppTransitionManager { public Bundle getActivityLaunchOptions(Launcher launcher, View v) { return getDefaultActivityLaunchOptions(launcher, v); } + + /** Cancels the current transition animation */ + public void finishAnimation() { + } } diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java index 8eeeec3dfb..6eafc895df 100644 --- a/src/com/android/launcher3/LauncherStateManager.java +++ b/src/com/android/launcher3/LauncherStateManager.java @@ -269,6 +269,13 @@ public class LauncherStateManager { // Only disable clipping if needed, otherwise leave it as previous value. mLauncher.getWorkspace().setClipChildren(false); } + + // If we are still animating to launcher from an app, + // finish it and let this state animation take over. + LauncherAppTransitionManager transitionManager = mLauncher.getAppTransitionManager(); + if (transitionManager != null) { + transitionManager.finishAnimation(); + } } private void onStateTransitionEnd(LauncherState state) {