Search in sources :

Example 1 with AbstractFloatingView

use of com.android.launcher3.AbstractFloatingView in project android_packages_apps_Launcher3 by crdroidandroid.

the class DragLayer method onInterceptHoverEvent.

@Override
public boolean onInterceptHoverEvent(MotionEvent ev) {
    if (mActivity == null || mActivity.getWorkspace() == null) {
        return false;
    }
    AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
    if (!(topView instanceof Folder)) {
        return false;
    } else {
        AccessibilityManager accessibilityManager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE);
        if (accessibilityManager.isTouchExplorationEnabled()) {
            Folder currentFolder = (Folder) topView;
            final int action = ev.getAction();
            boolean isOverFolderOrSearchBar;
            switch(action) {
                case MotionEvent.ACTION_HOVER_ENTER:
                    isOverFolderOrSearchBar = isEventOverView(topView, ev) || isEventOverAccessibleDropTargetBar(ev);
                    if (!isOverFolderOrSearchBar) {
                        sendTapOutsideFolderAccessibilityEvent(currentFolder.isEditingName());
                        mHoverPointClosesFolder = true;
                        return true;
                    }
                    mHoverPointClosesFolder = false;
                    break;
                case MotionEvent.ACTION_HOVER_MOVE:
                    isOverFolderOrSearchBar = isEventOverView(topView, ev) || isEventOverAccessibleDropTargetBar(ev);
                    if (!isOverFolderOrSearchBar && !mHoverPointClosesFolder) {
                        sendTapOutsideFolderAccessibilityEvent(currentFolder.isEditingName());
                        mHoverPointClosesFolder = true;
                        return true;
                    } else if (!isOverFolderOrSearchBar) {
                        return true;
                    }
                    mHoverPointClosesFolder = false;
            }
        }
    }
    return false;
}
Also used : AccessibilityManager(android.view.accessibility.AccessibilityManager) Folder(com.android.launcher3.folder.Folder) AbstractFloatingView(com.android.launcher3.AbstractFloatingView)

Example 2 with AbstractFloatingView

use of com.android.launcher3.AbstractFloatingView in project android_packages_apps_Launcher3 by crdroidandroid.

the class NavBarToHomeTouchController method initCurrentAnimation.

private void initCurrentAnimation() {
    long accuracy = (long) (getShiftRange() * 2);
    final PendingAnimation builder = new PendingAnimation(accuracy);
    if (mStartState.overviewUi) {
        RecentsView recentsView = mLauncher.getOverviewPanel();
        AnimatorControllerWithResistance.createRecentsResistanceFromOverviewAnim(mLauncher, builder);
        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
            builder.addOnFrameCallback(recentsView::redrawLiveTile);
        }
        AbstractFloatingView.closeOpenContainer(mLauncher, AbstractFloatingView.TYPE_TASK_MENU);
    } else if (mStartState == ALL_APPS) {
        AllAppsTransitionController allAppsController = mLauncher.getAllAppsController();
        builder.setFloat(allAppsController, ALL_APPS_PROGRESS, -mPullbackDistance / allAppsController.getShiftRange(), PULLBACK_INTERPOLATOR);
        // Slightly fade out all apps content to further distinguish from scrolling.
        StateAnimationConfig config = new StateAnimationConfig();
        config.duration = accuracy;
        config.setInterpolator(StateAnimationConfig.ANIM_ALL_APPS_FADE, Interpolators.mapToProgress(PULLBACK_INTERPOLATOR, 0, 0.5f));
        allAppsController.setAlphas(mEndState, config, builder);
    }
    AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mLauncher);
    if (topView != null) {
        topView.addHintCloseAnim(mPullbackDistance, PULLBACK_INTERPOLATOR, builder);
    }
    mCurrentAnimation = builder.createPlaybackController();
    mCurrentAnimation.getTarget().addListener(newCancelListener(this::clearState));
}
Also used : PendingAnimation(com.android.launcher3.anim.PendingAnimation) StateAnimationConfig(com.android.launcher3.states.StateAnimationConfig) AllAppsTransitionController(com.android.launcher3.allapps.AllAppsTransitionController) RecentsView(com.android.quickstep.views.RecentsView) AbstractFloatingView(com.android.launcher3.AbstractFloatingView)

Example 3 with AbstractFloatingView

use of com.android.launcher3.AbstractFloatingView in project android_packages_apps_Launcher3 by crdroidandroid.

the class NavBarToHomeTouchController method onDragEnd.

@Override
public void onDragEnd(float velocity) {
    boolean fling = mSwipeDetector.isFling(velocity);
    float progress = mCurrentAnimation.getProgressFraction();
    float interpolatedProgress = PULLBACK_INTERPOLATOR.getInterpolation(progress);
    boolean success = interpolatedProgress >= SUCCESS_TRANSITION_PROGRESS || (velocity < 0 && fling);
    if (success) {
        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
            RecentsView recentsView = mLauncher.getOverviewPanel();
            recentsView.switchToScreenshot(null, () -> recentsView.finishRecentsAnimation(true, /* toRecents */
            null));
        }
        if (mStartState.overviewUi) {
            new OverviewToHomeAnim(mLauncher, () -> onSwipeInteractionCompleted(mEndState)).animateWithVelocity(velocity);
        } else {
            mLauncher.getStateManager().goToState(mEndState, true, forSuccessCallback(() -> onSwipeInteractionCompleted(mEndState)));
        }
        if (mStartState != mEndState) {
            logHomeGesture();
        }
        AbstractFloatingView topOpenView = AbstractFloatingView.getTopOpenView(mLauncher);
        if (topOpenView != null) {
            AbstractFloatingView.closeAllOpenViews(mLauncher);
        // TODO: add to WW log
        }
        TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
    } else {
        // Quickly return to the state we came from (we didn't move far).
        ValueAnimator anim = mCurrentAnimation.getAnimationPlayer();
        anim.setFloatValues(progress, 0);
        anim.addListener(forSuccessCallback(() -> onSwipeInteractionCompleted(mStartState)));
        anim.setDuration(80).start();
    }
}
Also used : RecentsView(com.android.quickstep.views.RecentsView) OverviewToHomeAnim(com.android.quickstep.util.OverviewToHomeAnim) ValueAnimator(android.animation.ValueAnimator) AbstractFloatingView(com.android.launcher3.AbstractFloatingView)

Aggregations

AbstractFloatingView (com.android.launcher3.AbstractFloatingView)3 RecentsView (com.android.quickstep.views.RecentsView)2 ValueAnimator (android.animation.ValueAnimator)1 AccessibilityManager (android.view.accessibility.AccessibilityManager)1 AllAppsTransitionController (com.android.launcher3.allapps.AllAppsTransitionController)1 PendingAnimation (com.android.launcher3.anim.PendingAnimation)1 Folder (com.android.launcher3.folder.Folder)1 StateAnimationConfig (com.android.launcher3.states.StateAnimationConfig)1 OverviewToHomeAnim (com.android.quickstep.util.OverviewToHomeAnim)1