diff options
author | Jon Miranda <jonmiranda@google.com> | 2018-01-24 15:38:25 -0800 |
---|---|---|
committer | Jon Miranda <jonmiranda@google.com> | 2018-01-25 14:32:47 -0800 |
commit | 54441f5df9011b02f9adffcab0e02c80ffec545d (patch) | |
tree | 526b138555f2614860dc6c6cf207de6104f59e37 /src/com/android/launcher3/LauncherAppTransitionManager.java | |
parent | 82d010f0d2f9aef26ec8d7c56c4661767fb514a5 (diff) | |
download | android_packages_apps_Trebuchet-54441f5df9011b02f9adffcab0e02c80ffec545d.tar.gz android_packages_apps_Trebuchet-54441f5df9011b02f9adffcab0e02c80ffec545d.tar.bz2 android_packages_apps_Trebuchet-54441f5df9011b02f9adffcab0e02c80ffec545d.zip |
Refactor LauncherAppTransitionManager & polish for new app transitions.
* Add start delay when launcher resumes from all apps or landscape.
* Track the last app transition animator and cancel it before beginning a new one,
otherwise the animators can conflict with each other.
ie. Opening an app from all apps and then immediately pressing back to return to
all apps.
* Use class overrride instead of UiFactory.
Bug: 70220260
Change-Id: I4755d45d820f9d551e443d6c4a148e8789c5bc57
Diffstat (limited to 'src/com/android/launcher3/LauncherAppTransitionManager.java')
-rw-r--r-- | src/com/android/launcher3/LauncherAppTransitionManager.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/com/android/launcher3/LauncherAppTransitionManager.java b/src/com/android/launcher3/LauncherAppTransitionManager.java new file mode 100644 index 000000000..9d68dc9e8 --- /dev/null +++ b/src/com/android/launcher3/LauncherAppTransitionManager.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.launcher3; + + +import android.app.ActivityOptions; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.view.View; + +/** + * Manages the opening and closing app transitions from Launcher. + */ +public class LauncherAppTransitionManager { + + public Bundle getDefaultActivityLaunchOptions(Launcher launcher, View v) { + if (Utilities.ATLEAST_MARSHMALLOW) { + int left = 0, top = 0; + int width = v.getMeasuredWidth(), height = v.getMeasuredHeight(); + if (v instanceof BubbleTextView) { + // Launch from center of icon, not entire view + Drawable icon = ((BubbleTextView) v).getIcon(); + if (icon != null) { + Rect bounds = icon.getBounds(); + left = (width - bounds.width()) / 2; + top = v.getPaddingTop(); + width = bounds.width(); + height = bounds.height(); + } + } + return ActivityOptions.makeClipRevealAnimation(v, left, top, width, height) + .toBundle(); + } else if (Utilities.ATLEAST_LOLLIPOP_MR1) { + // On L devices, we use the device default slide-up transition. + // On L MR1 devices, we use a custom version of the slide-up transition which + // doesn't have the delay present in the device default. + return ActivityOptions.makeCustomAnimation(launcher, R.anim.task_open_enter, + R.anim.no_anim).toBundle(); + } + return null; + } + + public Bundle getActivityLaunchOptions(Launcher launcher, View v) { + return getDefaultActivityLaunchOptions(launcher, v); + } + + public void registerRemoteAnimations() { + } +} |