Search in sources :

Example 1 with ClipAnimationHelper

use of com.android.quickstep.util.ClipAnimationHelper in project Neo-Launcher by NeoApplications.

the class TaskViewUtils method getRecentsWindowAnimator.

/**
 * @return Animator that controls the window of the opening targets for the recents launch
 * animation.
 */
public static ValueAnimator getRecentsWindowAnimator(TaskView v, boolean skipViewChanges, RemoteAnimationTargetCompat[] targets, final ClipAnimationHelper inOutHelper) {
    SyncRtSurfaceTransactionApplierCompat applier = new SyncRtSurfaceTransactionApplierCompat(v);
    ClipAnimationHelper.TransformParams params = new ClipAnimationHelper.TransformParams().setSyncTransactionApplier(applier);
    final RemoteAnimationTargetSet targetSet = new RemoteAnimationTargetSet(targets, MODE_OPENING);
    targetSet.addDependentTransactionApplier(applier);
    final RecentsView recentsView = v.getRecentsView();
    final ValueAnimator appAnimator = ValueAnimator.ofFloat(0, 1);
    appAnimator.setInterpolator(TOUCH_RESPONSE_INTERPOLATOR);
    appAnimator.addUpdateListener(new MultiValueUpdateListener() {

        // Defer fading out the view until after the app window gets faded in
        final FloatProp mViewAlpha = new FloatProp(1f, 0f, 75, 75, LINEAR);

        final FloatProp mTaskAlpha = new FloatProp(0f, 1f, 0, 75, LINEAR);

        final RectF mThumbnailRect;

        {
            inOutHelper.setTaskAlphaCallback((t, alpha) -> mTaskAlpha.value);
            inOutHelper.prepareAnimation(BaseActivity.fromContext(v.getContext()).getDeviceProfile(), true);
            inOutHelper.fromTaskThumbnailView(v.getThumbnail(), (RecentsView) v.getParent(), targetSet.apps.length == 0 ? null : targetSet.apps[0]);
            mThumbnailRect = new RectF(inOutHelper.getTargetRect());
            mThumbnailRect.offset(-v.getTranslationX(), -v.getTranslationY());
            Utilities.scaleRectFAboutCenter(mThumbnailRect, 1 / v.getScaleX());
        }

        @Override
        public void onUpdate(float percent) {
            // TODO: Take into account the current fullscreen progress for animating the insets
            params.setProgress(1 - percent);
            RectF taskBounds = inOutHelper.applyTransform(targetSet, params);
            int taskIndex = recentsView.indexOfChild(v);
            int centerTaskIndex = recentsView.getCurrentPage();
            boolean parallaxCenterAndAdjacentTask = taskIndex != centerTaskIndex;
            if (!skipViewChanges && parallaxCenterAndAdjacentTask) {
                float scale = taskBounds.width() / mThumbnailRect.width();
                v.setScaleX(scale);
                v.setScaleY(scale);
                v.setTranslationX(taskBounds.centerX() - mThumbnailRect.centerX());
                v.setTranslationY(taskBounds.centerY() - mThumbnailRect.centerY());
                v.setAlpha(mViewAlpha.value);
            }
        }
    });
    appAnimator.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(Animator animation) {
            targetSet.release();
        }
    });
    return appAnimator;
}
Also used : SyncRtSurfaceTransactionApplierCompat(com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat) RectF(android.graphics.RectF) Utilities(com.android.launcher3.Utilities) RemoteAnimationTargetCompat(com.android.systemui.shared.system.RemoteAnimationTargetCompat) SyncRtSurfaceTransactionApplierCompat(com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat) Task(com.android.systemui.shared.recents.model.Task) RemoteAnimationTargetSet(com.android.quickstep.util.RemoteAnimationTargetSet) MultiValueUpdateListener(com.android.quickstep.util.MultiValueUpdateListener) ComponentName(android.content.ComponentName) ItemInfo(com.android.launcher3.ItemInfo) ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) Animator(android.animation.Animator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) BaseDraggingActivity(com.android.launcher3.BaseDraggingActivity) LINEAR(com.android.launcher3.anim.Interpolators.LINEAR) TaskView(com.android.quickstep.views.TaskView) TOUCH_RESPONSE_INTERPOLATOR(com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR) MODE_OPENING(com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING) BaseActivity(com.android.launcher3.BaseActivity) View(android.view.View) RecentsView(com.android.quickstep.views.RecentsView) ValueAnimator(android.animation.ValueAnimator) ValueAnimator(android.animation.ValueAnimator) RemoteAnimationTargetSet(com.android.quickstep.util.RemoteAnimationTargetSet) RectF(android.graphics.RectF) ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) MultiValueUpdateListener(com.android.quickstep.util.MultiValueUpdateListener) Animator(android.animation.Animator) ValueAnimator(android.animation.ValueAnimator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) RecentsView(com.android.quickstep.views.RecentsView)

Example 2 with ClipAnimationHelper

use of com.android.quickstep.util.ClipAnimationHelper in project Neo-Launcher by NeoApplications.

the class RecentsActivity method composeRecentsLaunchAnimator.

/**
 * Composes the animations for a launch from the recents list if possible.
 */
private AnimatorSet composeRecentsLaunchAnimator(TaskView taskView, RemoteAnimationTargetCompat[] targets) {
    AnimatorSet target = new AnimatorSet();
    boolean activityClosing = taskIsATargetWithMode(targets, getTaskId(), MODE_CLOSING);
    ClipAnimationHelper helper = new ClipAnimationHelper(this);
    target.play(getRecentsWindowAnimator(taskView, !activityClosing, targets, helper).setDuration(RECENTS_LAUNCH_DURATION));
    // Found a visible recents task that matches the opening app, lets launch the app from there
    if (activityClosing) {
        Animator adjacentAnimation = mFallbackRecentsView.createAdjacentPageAnimForTaskLaunch(taskView, helper);
        adjacentAnimation.setInterpolator(Interpolators.TOUCH_RESPONSE_INTERPOLATOR);
        adjacentAnimation.setDuration(RECENTS_LAUNCH_DURATION);
        adjacentAnimation.addListener(new AnimatorListenerAdapter() {

            @Override
            public void onAnimationEnd(Animator animation) {
                mFallbackRecentsView.resetTaskVisuals();
            }
        });
        target.play(adjacentAnimation);
    }
    return target;
}
Also used : ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) TaskViewUtils.getRecentsWindowAnimator(com.android.quickstep.TaskViewUtils.getRecentsWindowAnimator) Animator(android.animation.Animator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) AnimatorSet(android.animation.AnimatorSet)

Example 3 with ClipAnimationHelper

use of com.android.quickstep.util.ClipAnimationHelper in project Neo-Launcher by NeoApplications.

the class RecentsView method createTaskLauncherAnimation.

public PendingAnimation createTaskLauncherAnimation(TaskView tv, long duration) {
    if (FeatureFlags.IS_DOGFOOD_BUILD && mPendingAnimation != null) {
        throw new IllegalStateException("Another pending animation is still running");
    }
    int count = getTaskViewCount();
    if (count == 0) {
        return new PendingAnimation(new AnimatorSet());
    }
    int targetSysUiFlags = tv.getThumbnail().getSysUiStatusNavFlags();
    final boolean[] passedOverviewThreshold = new boolean[] { false };
    ValueAnimator progressAnim = ValueAnimator.ofFloat(0, 1);
    progressAnim.setInterpolator(LINEAR);
    progressAnim.addUpdateListener(animator -> {
        // Once we pass a certain threshold, update the sysui flags to match the target
        // tasks' flags
        mActivity.getSystemUiController().updateUiState(UI_STATE_OVERVIEW, animator.getAnimatedFraction() > UPDATE_SYSUI_FLAGS_THRESHOLD ? targetSysUiFlags : 0);
        onTaskLaunchAnimationUpdate(animator.getAnimatedFraction(), tv);
        // Passing the threshold from taskview to fullscreen app will vibrate
        final boolean passed = animator.getAnimatedFraction() >= SUCCESS_TRANSITION_PROGRESS;
        if (passed != passedOverviewThreshold[0]) {
            passedOverviewThreshold[0] = passed;
            performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
        }
    });
    ClipAnimationHelper clipAnimationHelper = new ClipAnimationHelper(mActivity);
    clipAnimationHelper.fromTaskThumbnailView(tv.getThumbnail(), this);
    clipAnimationHelper.prepareAnimation(mActivity.getDeviceProfile(), true);
    AnimatorSet anim = createAdjacentPageAnimForTaskLaunch(tv, clipAnimationHelper);
    anim.play(progressAnim);
    anim.setDuration(duration);
    Consumer<Boolean> onTaskLaunchFinish = this::onTaskLaunched;
    mPendingAnimation = new PendingAnimation(anim);
    mPendingAnimation.addEndListener((onEndListener) -> {
        if (onEndListener.isSuccess) {
            Consumer<Boolean> onLaunchResult = (result) -> {
                onTaskLaunchFinish.accept(result);
                if (!result) {
                    tv.notifyTaskLaunchFailed(TAG);
                }
            };
            tv.launchTask(false, onLaunchResult, getHandler());
            Task task = tv.getTask();
            if (task != null) {
                mActivity.getUserEventDispatcher().logTaskLaunchOrDismiss(onEndListener.logAction, Direction.DOWN, indexOfChild(tv), TaskUtils.getLaunchComponentKeyForTask(task.key));
            }
        } else {
            onTaskLaunchFinish.accept(false);
        }
        mPendingAnimation = null;
    });
    return mPendingAnimation;
}
Also used : SyncRtSurfaceTransactionApplierCompat(com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat) Drawable(android.graphics.drawable.Drawable) LayoutTransition(android.animation.LayoutTransition) Handler(android.os.Handler) TAP(com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch.TAP) Canvas(android.graphics.Canvas) AccessibilityEvent(android.view.accessibility.AccessibilityEvent) PendingAnimation(com.android.launcher3.util.PendingAnimation) SCALE_PROPERTY(com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY) RotationMode(com.android.launcher3.graphics.RotationMode) TargetApi(android.annotation.TargetApi) CLEAR_ALL_BUTTON(com.android.launcher3.userevent.nano.LauncherLogProto.ControlType.CLEAR_ALL_BUTTON) RecentsAnimationWrapper(com.android.quickstep.RecentsAnimationWrapper) DeviceProfile(com.android.launcher3.DeviceProfile) HapticFeedbackConstants(android.view.HapticFeedbackConstants) Nullable(androidx.annotation.Nullable) Layout(android.text.Layout) TextPaint(android.text.TextPaint) LauncherLogProto(com.android.launcher3.userevent.nano.LauncherLogProto) TimeInterpolator(android.animation.TimeInterpolator) Insettable(com.android.launcher3.Insettable) Utilities.squaredTouchSlop(com.android.launcher3.Utilities.squaredTouchSlop) ArrayList(java.util.ArrayList) TaskUtils.checkCurrentOrManagedUserId(com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId) ComponentName(android.content.ComponentName) ViewPool(com.android.launcher3.util.ViewPool) ViewDebug(android.view.ViewDebug) FeatureFlags(com.android.launcher3.config.FeatureFlags) Direction(com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction) LINEAR(com.android.launcher3.anim.Interpolators.LINEAR) SparseBooleanArray(android.util.SparseBooleanArray) R(com.android.launcher3.R) ComponentKey(com.android.launcher3.util.ComponentKey) MIN_VISIBLE_CHANGE_PIXELS(androidx.dynamicanimation.animation.DynamicAnimation.MIN_VISIBLE_CHANGE_PIXELS) ValueAnimator(android.animation.ValueAnimator) ACCEL(com.android.launcher3.anim.Interpolators.ACCEL) UI_STATE_OVERVIEW(com.android.launcher3.util.SystemUiController.UI_STATE_OVERVIEW) Rect(android.graphics.Rect) PackageManagerWrapper(com.android.systemui.shared.system.PackageManagerWrapper) Task(com.android.systemui.shared.recents.model.Task) Animator(android.animation.Animator) FloatProperty(android.util.FloatProperty) QUICKSTEP_SPRINGS(com.android.launcher3.config.FeatureFlags.QUICKSTEP_SPRINGS) AttributeSet(android.util.AttributeSet) ActivityManagerWrapper(com.android.systemui.shared.system.ActivityManagerWrapper) View(android.view.View) Matrix(android.graphics.Matrix) LauncherEventUtil(com.android.systemui.shared.system.LauncherEventUtil) RectF(android.graphics.RectF) Utilities(com.android.launcher3.Utilities) SpringForce(androidx.dynamicanimation.animation.SpringForce) TransitionListener(android.animation.LayoutTransition.TransitionListener) UI_HELPER_EXECUTOR(com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR) ObjectAnimator(android.animation.ObjectAnimator) EDGE_NAV_BAR(com.android.launcher3.Utilities.EDGE_NAV_BAR) TaskUtils(com.android.quickstep.TaskUtils) TaskStackChangeListener(com.android.systemui.shared.system.TaskStackChangeListener) ViewGroup(android.view.ViewGroup) WindowInsets(android.view.WindowInsets) ThumbnailData(com.android.systemui.shared.recents.model.ThumbnailData) TaskThumbnailChangeListener(com.android.quickstep.RecentsModel.TaskThumbnailChangeListener) ListView(android.widget.ListView) Themes(com.android.launcher3.util.Themes) SUCCESS_TRANSITION_PROGRESS(com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController.SUCCESS_TRANSITION_PROGRESS) Typeface(android.graphics.Typeface) ActivityManager(android.app.ActivityManager) Context(android.content.Context) StaticLayout(android.text.StaticLayout) AccessibilityNodeInfo(android.view.accessibility.AccessibilityNodeInfo) TaskThumbnailCache(com.android.quickstep.TaskThumbnailCache) CHANGE_FLAG_ICON_PARAMS(com.android.launcher3.InvariantDeviceProfile.CHANGE_FLAG_ICON_PARAMS) KeyEvent(android.view.KeyEvent) Touch(com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch) STATE_HANDLER_INVISIBILITY_FLAGS(com.android.launcher3.BaseActivity.STATE_HANDLER_INVISIBILITY_FLAGS) Intent(android.content.Intent) AnimatorPlaybackController(com.android.launcher3.anim.AnimatorPlaybackController) SpringObjectAnimator(com.android.launcher3.anim.SpringObjectAnimator) FAST_OUT_SLOW_IN(com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN) Utilities.squaredHypot(com.android.launcher3.Utilities.squaredHypot) MotionEvent(android.view.MotionEvent) BaseActivity(com.android.launcher3.BaseActivity) ENABLE_QUICKSTEP_LIVE_TILE(com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE) AnimatorSet(android.animation.AnimatorSet) Build(android.os.Build) OverScroller(com.android.launcher3.util.OverScroller) LayoutInflater(android.view.LayoutInflater) VIEW_TRANSLATE_Y(com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y) VIEW_TRANSLATE_X(com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X) ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) Point(android.graphics.Point) ACCEL_2(com.android.launcher3.anim.Interpolators.ACCEL_2) LauncherState(com.android.launcher3.LauncherState) Consumer(java.util.function.Consumer) InvariantDeviceProfile(com.android.launcher3.InvariantDeviceProfile) PropertyListBuilder(com.android.launcher3.anim.PropertyListBuilder) RecentsModel(com.android.quickstep.RecentsModel) PagedView(com.android.launcher3.PagedView) PendingAnimation(com.android.launcher3.util.PendingAnimation) ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) Task(com.android.systemui.shared.recents.model.Task) AnimatorSet(android.animation.AnimatorSet) ValueAnimator(android.animation.ValueAnimator) TextPaint(android.text.TextPaint) Point(android.graphics.Point)

Example 4 with ClipAnimationHelper

use of com.android.quickstep.util.ClipAnimationHelper in project Neo-Launcher by NeoApplications.

the class AppToOverviewAnimationProvider method createWindowAnimation.

/**
 * Create remote window animation from the currently running app to the overview panel.
 *
 * @param targetCompats the target apps
 * @return animation from app to overview
 */
@Override
public AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] targetCompats) {
    if (mRecentsView != null) {
        mRecentsView.setRunningTaskIconScaledDown(true);
    }
    AnimatorSet anim = new AnimatorSet();
    anim.addListener(new AnimationSuccessListener() {

        @Override
        public void onAnimationSuccess(Animator animator) {
            mHelper.onSwipeUpToRecentsComplete(mActivity);
            if (mRecentsView != null) {
                mRecentsView.animateUpRunningTaskIconScale();
            }
        }
    });
    if (mActivity == null) {
        Log.e(TAG, "Animation created, before activity");
        anim.play(ValueAnimator.ofInt(0, 1).setDuration(RECENTS_LAUNCH_DURATION));
        return anim;
    }
    RemoteAnimationTargetSet targetSet = new RemoteAnimationTargetSet(targetCompats, MODE_CLOSING);
    // Use the top closing app to determine the insets for the animation
    RemoteAnimationTargetCompat runningTaskTarget = targetSet.findTask(mTargetTaskId);
    if (runningTaskTarget == null) {
        Log.e(TAG, "No closing app");
        anim.play(ValueAnimator.ofInt(0, 1).setDuration(RECENTS_LAUNCH_DURATION));
        return anim;
    }
    final ClipAnimationHelper clipHelper = new ClipAnimationHelper(mActivity);
    // At this point, the activity is already started and laid-out. Get the home-bounds
    // relative to the screen using the rootView of the activity.
    int[] loc = new int[2];
    View rootView = mActivity.getRootView();
    rootView.getLocationOnScreen(loc);
    Rect homeBounds = new Rect(loc[0], loc[1], loc[0] + rootView.getWidth(), loc[1] + rootView.getHeight());
    clipHelper.updateSource(homeBounds, runningTaskTarget);
    Rect targetRect = new Rect();
    mHelper.getSwipeUpDestinationAndLength(mActivity.getDeviceProfile(), mActivity, targetRect);
    clipHelper.updateTargetRect(targetRect);
    clipHelper.prepareAnimation(mActivity.getDeviceProfile(), false);
    ClipAnimationHelper.TransformParams params = new ClipAnimationHelper.TransformParams().setSyncTransactionApplier(new SyncRtSurfaceTransactionApplierCompat(rootView));
    ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1);
    valueAnimator.setDuration(RECENTS_LAUNCH_DURATION);
    valueAnimator.setInterpolator(TOUCH_RESPONSE_INTERPOLATOR);
    valueAnimator.addUpdateListener((v) -> {
        params.setProgress((float) v.getAnimatedValue());
        clipHelper.applyTransform(targetSet, params);
    });
    if (targetSet.isAnimatingHome()) {
        // If we are animating home, fade in the opening targets
        RemoteAnimationTargetSet openingSet = new RemoteAnimationTargetSet(targetCompats, MODE_OPENING);
        TransactionCompat transaction = new TransactionCompat();
        valueAnimator.addUpdateListener((v) -> {
            for (RemoteAnimationTargetCompat app : openingSet.apps) {
                transaction.setAlpha(app.leash, (float) v.getAnimatedValue());
            }
            transaction.apply();
        });
    }
    anim.play(valueAnimator);
    return anim;
}
Also used : SyncRtSurfaceTransactionApplierCompat(com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat) Rect(android.graphics.Rect) RemoteAnimationTargetCompat(com.android.systemui.shared.system.RemoteAnimationTargetCompat) AnimatorSet(android.animation.AnimatorSet) TransactionCompat(com.android.systemui.shared.system.TransactionCompat) ValueAnimator(android.animation.ValueAnimator) View(android.view.View) RecentsView(com.android.quickstep.views.RecentsView) AbstractFloatingView(com.android.launcher3.AbstractFloatingView) RemoteAnimationTargetSet(com.android.quickstep.util.RemoteAnimationTargetSet) ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) Animator(android.animation.Animator) ValueAnimator(android.animation.ValueAnimator) AnimationSuccessListener(com.android.launcher3.anim.AnimationSuccessListener)

Example 5 with ClipAnimationHelper

use of com.android.quickstep.util.ClipAnimationHelper in project Neo-Launcher by NeoApplications.

the class LauncherAppTransitionManagerImpl method composeRecentsLaunchAnimator.

@Override
protected void composeRecentsLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v, @NonNull RemoteAnimationTargetCompat[] targets, boolean launcherClosing) {
    RecentsView recentsView = mLauncher.getOverviewPanel();
    boolean skipLauncherChanges = !launcherClosing;
    TaskView taskView = findTaskViewToLaunch(mLauncher, v, targets);
    ClipAnimationHelper helper = new ClipAnimationHelper(mLauncher);
    anim.play(getRecentsWindowAnimator(taskView, skipLauncherChanges, targets, helper).setDuration(RECENTS_LAUNCH_DURATION));
    Animator childStateAnimation = null;
    // Found a visible recents task that matches the opening app, lets launch the app from there
    Animator launcherAnim;
    final AnimatorListenerAdapter windowAnimEndListener;
    if (launcherClosing) {
        launcherAnim = recentsView.createAdjacentPageAnimForTaskLaunch(taskView, helper);
        launcherAnim.setInterpolator(Interpolators.TOUCH_RESPONSE_INTERPOLATOR);
        launcherAnim.setDuration(RECENTS_LAUNCH_DURATION);
        // Make sure recents gets fixed up by resetting task alphas and scales, etc.
        windowAnimEndListener = new AnimatorListenerAdapter() {

            @Override
            public void onAnimationEnd(Animator animation) {
                mLauncher.getStateManager().moveToRestState();
                mLauncher.getStateManager().reapplyState();
            }
        };
    } else {
        AnimatorPlaybackController controller = mLauncher.getStateManager().createAnimationToNewWorkspace(NORMAL, RECENTS_LAUNCH_DURATION);
        controller.dispatchOnStart();
        childStateAnimation = controller.getTarget();
        launcherAnim = controller.getAnimationPlayer().setDuration(RECENTS_LAUNCH_DURATION);
        windowAnimEndListener = new AnimatorListenerAdapter() {

            @Override
            public void onAnimationEnd(Animator animation) {
                mLauncher.getStateManager().goToState(NORMAL, false);
            }
        };
    }
    anim.play(launcherAnim);
    // Set the current animation first, before adding windowAnimEndListener. Setting current
    // animation adds some listeners which need to be called before windowAnimEndListener
    // (the ordering of listeners matter in this case).
    mLauncher.getStateManager().setCurrentAnimation(anim, childStateAnimation);
    anim.addListener(windowAnimEndListener);
}
Also used : ClipAnimationHelper(com.android.quickstep.util.ClipAnimationHelper) TaskView(com.android.quickstep.views.TaskView) TaskViewUtils.getRecentsWindowAnimator(com.android.quickstep.TaskViewUtils.getRecentsWindowAnimator) Animator(android.animation.Animator) ObjectAnimator(android.animation.ObjectAnimator) ValueAnimator(android.animation.ValueAnimator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) AnimatorPlaybackController(com.android.launcher3.anim.AnimatorPlaybackController) RecentsView(com.android.quickstep.views.RecentsView)

Aggregations

Animator (android.animation.Animator)5 ClipAnimationHelper (com.android.quickstep.util.ClipAnimationHelper)5 ValueAnimator (android.animation.ValueAnimator)4 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)3 AnimatorSet (android.animation.AnimatorSet)3 View (android.view.View)3 SyncRtSurfaceTransactionApplierCompat (com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat)3 ObjectAnimator (android.animation.ObjectAnimator)2 ComponentName (android.content.ComponentName)2 Rect (android.graphics.Rect)2 RectF (android.graphics.RectF)2 BaseActivity (com.android.launcher3.BaseActivity)2 Utilities (com.android.launcher3.Utilities)2 LINEAR (com.android.launcher3.anim.Interpolators.LINEAR)2 RecentsView (com.android.quickstep.views.RecentsView)2 Task (com.android.systemui.shared.recents.model.Task)2 LayoutTransition (android.animation.LayoutTransition)1 TransitionListener (android.animation.LayoutTransition.TransitionListener)1 TimeInterpolator (android.animation.TimeInterpolator)1 TargetApi (android.annotation.TargetApi)1