Search in sources :

Example 11 with DeviceProfile

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

the class LauncherAppWidgetProviderInfo method initSpans.

public void initSpans(Context context, InvariantDeviceProfile idp) {
    int minSpanX = 0;
    int minSpanY = 0;
    int maxSpanX = idp.numColumns;
    int maxSpanY = idp.numRows;
    int spanX = 0;
    int spanY = 0;
    Rect widgetPadding = new Rect();
    Rect localPadding = new Rect();
    AppWidgetHostView.getDefaultPaddingForWidget(context, provider, widgetPadding);
    Point cellSize = new Point();
    for (DeviceProfile dp : idp.supportedProfiles) {
        dp.getCellSize(cellSize);
        // If grids supports insetting widgets, we do not account for widget padding.
        if (dp.shouldInsetWidgets()) {
            localPadding.setEmpty();
        } else {
            localPadding.set(widgetPadding);
        }
        minSpanX = Math.max(minSpanX, getSpanX(localPadding, minResizeWidth, dp.cellLayoutBorderSpacingPx, cellSize.x));
        minSpanY = Math.max(minSpanY, getSpanY(localPadding, minResizeHeight, dp.cellLayoutBorderSpacingPx, cellSize.y));
        if (ATLEAST_S) {
            if (maxResizeWidth > 0) {
                maxSpanX = Math.min(maxSpanX, getSpanX(localPadding, maxResizeWidth, dp.cellLayoutBorderSpacingPx, cellSize.x));
            }
            if (maxResizeHeight > 0) {
                maxSpanY = Math.min(maxSpanY, getSpanY(localPadding, maxResizeHeight, dp.cellLayoutBorderSpacingPx, cellSize.y));
            }
        }
        spanX = Math.max(spanX, getSpanX(localPadding, minWidth, dp.cellLayoutBorderSpacingPx, cellSize.x));
        spanY = Math.max(spanY, getSpanY(localPadding, minHeight, dp.cellLayoutBorderSpacingPx, cellSize.y));
    }
    if (ATLEAST_S) {
        // Ensures maxSpan >= minSpan
        maxSpanX = Math.max(maxSpanX, minSpanX);
        maxSpanY = Math.max(maxSpanY, minSpanY);
        // Otherwise, use the span of minWidth/Height.
        if (targetCellWidth >= minSpanX && targetCellWidth <= maxSpanX && targetCellHeight >= minSpanY && targetCellHeight <= maxSpanY) {
            spanX = targetCellWidth;
            spanY = targetCellHeight;
        }
    }
    // If minSpanX/Y > spanX/Y, ignore the minSpanX/Y to match the behavior described in
    // minResizeWidth & minResizeHeight Android documentation. See
    // https://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo
    this.minSpanX = Math.min(spanX, minSpanX);
    this.minSpanY = Math.min(spanY, minSpanY);
    this.maxSpanX = maxSpanX;
    this.maxSpanY = maxSpanY;
    this.mIsMinSizeFulfilled = Math.min(spanX, minSpanX) <= idp.numColumns && Math.min(spanY, minSpanY) <= idp.numRows;
    // Ensures the default span X and span Y will not exceed the current grid size.
    this.spanX = Math.min(spanX, idp.numColumns);
    this.spanY = Math.min(spanY, idp.numRows);
}
Also used : DeviceProfile(com.android.launcher3.DeviceProfile) InvariantDeviceProfile(com.android.launcher3.InvariantDeviceProfile) Rect(android.graphics.Rect) Point(android.graphics.Point) Point(android.graphics.Point)

Example 12 with DeviceProfile

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

the class WidgetCell method setAppWidgetHostViewPreview.

private void setAppWidgetHostViewPreview(NavigableAppWidgetHostView appWidgetHostViewPreview, LauncherAppWidgetProviderInfo providerInfo, @Nullable RemoteViews remoteViews) {
    appWidgetHostViewPreview.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
    appWidgetHostViewPreview.setAppWidget(/* appWidgetId= */
    -1, providerInfo);
    Rect padding;
    DeviceProfile deviceProfile = mActivity.getDeviceProfile();
    if (deviceProfile.shouldInsetWidgets()) {
        padding = new Rect();
        appWidgetHostViewPreview.getWidgetInset(deviceProfile, padding);
    } else {
        padding = deviceProfile.inv.defaultWidgetPadding;
    }
    appWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right, padding.bottom);
    appWidgetHostViewPreview.updateAppWidget(remoteViews);
}
Also used : DeviceProfile(com.android.launcher3.DeviceProfile) Rect(android.graphics.Rect)

Example 13 with DeviceProfile

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

the class AbsSwipeUpHandler method doLogGesture.

private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask) {
    StatsLogManager.EventEnum event;
    switch(endTarget) {
        case HOME:
            event = LAUNCHER_HOME_GESTURE;
            break;
        case RECENTS:
            event = LAUNCHER_OVERVIEW_GESTURE;
            break;
        case LAST_TASK:
        case NEW_TASK:
            event = mLogDirectionUpOrLeft ? LAUNCHER_QUICKSWITCH_LEFT : LAUNCHER_QUICKSWITCH_RIGHT;
            break;
        default:
            event = IGNORE;
    }
    StatsLogger logger = StatsLogManager.newInstance(mContext).logger().withSrcState(LAUNCHER_STATE_BACKGROUND).withDstState(endTarget.containerType);
    if (targetTask != null) {
        logger.withItemInfo(targetTask.getItemInfo());
    }
    DeviceProfile dp = mDp;
    if (dp == null || mDownPos == null) {
        // We probably never received an animation controller, skip logging.
        return;
    }
    int pageIndex = endTarget == LAST_TASK ? LOG_NO_OP_PAGE_INDEX : mRecentsView.getNextPage();
    // TODO: set correct container using the pageIndex
    logger.log(event);
}
Also used : DeviceProfile(com.android.launcher3.DeviceProfile) StatsLogger(com.android.launcher3.logging.StatsLogManager.StatsLogger) StatsLogManager(com.android.launcher3.logging.StatsLogManager)

Example 14 with DeviceProfile

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

the class BaseActivityInterface method getTaskDimension.

/**
 * Gets the dimension of the task in the current system state.
 */
public static void getTaskDimension(Context context, DeviceProfile dp, PointF out) {
    if (dp.isMultiWindowMode) {
        WindowBounds bounds = SplitScreenBounds.INSTANCE.getSecondaryWindowBounds(context);
        if (TaskView.CLIP_STATUS_AND_NAV_BARS) {
            out.x = bounds.availableSize.x;
            out.y = bounds.availableSize.y;
        } else {
            out.x = bounds.availableSize.x + bounds.insets.left + bounds.insets.right;
            out.y = bounds.availableSize.y + bounds.insets.top + bounds.insets.bottom;
        }
    } else if (TaskView.CLIP_STATUS_AND_NAV_BARS) {
        out.x = dp.availableWidthPx;
        out.y = dp.availableHeightPx;
    } else {
        out.x = dp.widthPx;
        out.y = dp.heightPx;
    }
}
Also used : WindowBounds(com.android.launcher3.util.WindowBounds)

Example 15 with DeviceProfile

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

the class TaskViewUtils method composeRecentsSplitLaunchAnimatorLegacy.

/**
 * Legacy version (until shell transitions are enabled)
 */
public static void composeRecentsSplitLaunchAnimatorLegacy(@NonNull AnimatorSet anim, @NonNull TaskView v, @NonNull RemoteAnimationTargetCompat[] appTargets, @NonNull RemoteAnimationTargetCompat[] wallpaperTargets, @NonNull RemoteAnimationTargetCompat[] nonAppTargets, boolean launcherClosing, @NonNull StateManager stateManager, @NonNull DepthController depthController, int targetStage) {
    PendingAnimation out = new PendingAnimation(RECENTS_LAUNCH_DURATION);
    boolean isRunningTask = v.isRunningTask();
    TransformParams params = null;
    TaskViewSimulator tvs = null;
    RecentsView recentsView = v.getRecentsView();
    if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask) {
        params = recentsView.getLiveTileParams();
        tvs = recentsView.getLiveTileTaskViewSimulator();
    }
    boolean inLiveTileMode = ENABLE_QUICKSTEP_LIVE_TILE.get() && recentsView.getRunningTaskIndex() != -1;
    final RemoteAnimationTargets targets = new RemoteAnimationTargets(appTargets, wallpaperTargets, nonAppTargets, inLiveTileMode ? MODE_CLOSING : MODE_OPENING);
    if (params == null) {
        SurfaceTransactionApplier applier = new SurfaceTransactionApplier(v);
        targets.addReleaseCheck(applier);
        params = new TransformParams().setSyncTransactionApplier(applier).setTargetSet(targets);
    }
    Rect crop = new Rect();
    Context context = v.getContext();
    DeviceProfile dp = BaseActivity.fromContext(context).getDeviceProfile();
    if (tvs == null && targets.apps.length > 0) {
        tvs = new TaskViewSimulator(recentsView.getContext(), recentsView.getSizeStrategy());
        tvs.setDp(dp);
        // RecentsView never updates the display rotation until swipe-up so the value may
        // be stale. Use the display value instead.
        int displayRotation = DisplayController.INSTANCE.get(recentsView.getContext()).getInfo().rotation;
        tvs.getOrientationState().update(displayRotation, displayRotation);
        tvs.setPreview(targets.apps[targets.apps.length - 1]);
        tvs.fullScreenProgress.value = 0;
        tvs.recentsViewScale.value = 1;
        // tvs.setScroll(startScroll);
        // Fade in the task during the initial 20% of the animation
        out.addFloat(params, TransformParams.TARGET_ALPHA, 0, 1, clampToProgress(LINEAR, 0, 0.2f));
    }
    TaskViewSimulator topMostSimulator = null;
    if (tvs != null) {
        out.setFloat(tvs.fullScreenProgress, AnimatedFloat.VALUE, 1, TOUCH_RESPONSE_INTERPOLATOR);
        out.setFloat(tvs.recentsViewScale, AnimatedFloat.VALUE, tvs.getFullScreenScale(), TOUCH_RESPONSE_INTERPOLATOR);
        out.setFloat(tvs.recentsViewScroll, AnimatedFloat.VALUE, 0, TOUCH_RESPONSE_INTERPOLATOR);
        TaskViewSimulator finalTsv = tvs;
        TransformParams finalParams = params;
        out.addOnFrameCallback(() -> finalTsv.apply(finalParams));
        topMostSimulator = tvs;
    }
    anim.play(out.buildAnim());
}
Also used : Context(android.content.Context) PendingAnimation(com.android.launcher3.anim.PendingAnimation) DeviceProfile(com.android.launcher3.DeviceProfile) Rect(android.graphics.Rect) SurfaceTransactionApplier(com.android.quickstep.util.SurfaceTransactionApplier) TaskViewSimulator(com.android.quickstep.util.TaskViewSimulator) TransformParams(com.android.quickstep.util.TransformParams) RecentsView(com.android.quickstep.views.RecentsView)

Aggregations

DeviceProfile (com.android.launcher3.DeviceProfile)52 Rect (android.graphics.Rect)19 Point (android.graphics.Point)13 InvariantDeviceProfile (com.android.launcher3.InvariantDeviceProfile)10 ArrayList (java.util.ArrayList)7 Paint (android.graphics.Paint)5 Size (android.util.Size)5 SuppressLint (android.annotation.SuppressLint)4 Drawable (android.graphics.drawable.Drawable)4 View (android.view.View)4 Context (android.content.Context)3 Resources (android.content.res.Resources)3 RectF (android.graphics.RectF)3 FrameLayout (android.widget.FrameLayout)3 PendingAnimation (com.android.launcher3.anim.PendingAnimation)3 Animator (android.animation.Animator)2 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)2 ObjectAnimator (android.animation.ObjectAnimator)2 ComponentName (android.content.ComponentName)2 ColorDrawable (android.graphics.drawable.ColorDrawable)2