Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99f23c97 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update TaskIcon UI." into sc-dev

parents 16126eed 4defb400
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -24,15 +24,6 @@
    android:orientation="vertical"
    android:visibility="invisible">

    <com.android.quickstep.views.IconView
      android:id="@+id/task_icon"
      android:layout_width="@dimen/task_thumbnail_icon_size"
      android:layout_height="@dimen/task_thumbnail_icon_size"
      android:layout_gravity="top|center_horizontal"
      android:layout_marginBottom="@dimen/deep_shortcut_drawable_padding"
      android:focusable="false"
      android:importantForAccessibility="no" />

    <TextView
        android:id="@+id/task_name"
        android:layout_width="match_parent"
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
    <dimen name="task_thumbnail_top_margin">24dp</dimen>
    <dimen name="task_thumbnail_half_top_margin">12dp</dimen>
    <dimen name="task_thumbnail_icon_size">48dp</dimen>
    <dimen name="task_icon_top_margin">-16dp</dimen>
    <!-- For screens without rounded corners -->
    <dimen name="task_corner_radius_small">2dp</dimen>

+0 −52
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.widget.TextView;

import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.FastBitmapDrawable;
import com.android.launcher3.R;
import com.android.launcher3.anim.AnimationSuccessListener;
import com.android.launcher3.anim.Interpolators;
@@ -46,7 +45,6 @@ import com.android.launcher3.util.Themes;
import com.android.launcher3.views.BaseDragLayer;
import com.android.quickstep.TaskOverlayFactory;
import com.android.quickstep.TaskUtils;
import com.android.quickstep.views.IconView.OnScaleUpdateListener;

/**
 * Contains options for a recent task when long-pressing its icon.
@@ -55,42 +53,15 @@ public class TaskMenuView extends AbstractFloatingView {

    private static final Rect sTempRect = new Rect();

    private final OnScaleUpdateListener mTaskViewIconScaleListener = new OnScaleUpdateListener() {
        @Override
        public void onScaleUpdate(float scale) {
            final Drawable drawable = mTaskIcon.getDrawable();
            if (drawable instanceof FastBitmapDrawable) {
                if (scale != ((FastBitmapDrawable) drawable).getScale()) {
                    mMenuIconDrawable.setScale(scale);
                }
            }
        }
    };

    private final OnScaleUpdateListener mMenuIconScaleListener = new OnScaleUpdateListener() {
        @Override
        public void onScaleUpdate(float scale) {
            final Drawable taskViewDrawable = mTaskView.getIconView().getDrawable();
            if (taskViewDrawable instanceof FastBitmapDrawable) {
                final float currentScale = ((FastBitmapDrawable) taskViewDrawable).getScale();
                if (currentScale != scale) {
                    ((FastBitmapDrawable) taskViewDrawable).setScale(scale);
                }
            }
        }
    };

    private static final int REVEAL_OPEN_DURATION = 150;
    private static final int REVEAL_CLOSE_DURATION = 100;

    private final float mThumbnailTopMargin;
    private BaseDraggingActivity mActivity;
    private TextView mTaskName;
    private IconView mTaskIcon;
    private AnimatorSet mOpenCloseAnimator;
    private TaskView mTaskView;
    private LinearLayout mOptionLayout;
    private FastBitmapDrawable mMenuIconDrawable;

    public TaskMenuView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
@@ -107,7 +78,6 @@ public class TaskMenuView extends AbstractFloatingView {
    protected void onFinishInflate() {
        super.onFinishInflate();
        mTaskName = findViewById(R.id.task_name);
        mTaskIcon = findViewById(R.id.task_icon);
        mOptionLayout = findViewById(R.id.menu_option_layout);
    }

@@ -133,15 +103,6 @@ public class TaskMenuView extends AbstractFloatingView {
        }
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();

        // Remove all scale listeners when menu is removed
        mTaskView.getIconView().removeUpdateScaleListener(mTaskViewIconScaleListener);
        mTaskIcon.removeUpdateScaleListener(mMenuIconScaleListener);
    }

    @Override
    protected boolean isOfType(int type) {
        return (type & TYPE_TASK_MENU) != 0;
@@ -204,22 +165,9 @@ public class TaskMenuView extends AbstractFloatingView {

    private void addMenuOptions(TaskView taskView) {
        Drawable icon = taskView.getTask().icon.getConstantState().newDrawable();
        mTaskIcon.setDrawable(icon);
        mTaskIcon.setOnClickListener(v -> close(true));
        mTaskName.setText(TaskUtils.getTitle(getContext(), taskView.getTask()));
        mTaskName.setOnClickListener(v -> close(true));

        // Set the icons to match scale by listening to each other's changes
        mMenuIconDrawable = icon instanceof FastBitmapDrawable ? (FastBitmapDrawable) icon : null;
        taskView.getIconView().addUpdateScaleListener(mTaskViewIconScaleListener);
        mTaskIcon.addUpdateScaleListener(mMenuIconScaleListener);

        // Move the icon and text up half an icon size to lay over the TaskView
        LinearLayout.LayoutParams params =
                (LinearLayout.LayoutParams) mTaskIcon.getLayoutParams();
        params.topMargin = (int) -mThumbnailTopMargin;
        mTaskIcon.setLayoutParams(params);

        TaskOverlayFactory.getEnabledShortcuts(taskView).forEach(this::addMenuOption);
    }

+7 −2
Original line number Diff line number Diff line
@@ -612,6 +612,9 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
        boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
        LayoutParams snapshotParams = (LayoutParams) mSnapshotView.getLayoutParams();
        int thumbnailPadding = (int) getResources().getDimension(R.dimen.task_thumbnail_top_margin);
        int taskIconMargin = (int) getResources().getDimension(R.dimen.task_icon_top_margin);
        int taskIconHeight = (int) getResources().getDimension(R.dimen.task_thumbnail_icon_size);
        int iconTopMargin = taskIconMargin - taskIconHeight + thumbnailPadding;
        LayoutParams iconParams = (LayoutParams) mIconView.getLayoutParams();
        switch (orientationHandler.getRotation()) {
            case ROTATION_90:
@@ -623,7 +626,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
            case ROTATION_180:
                iconParams.gravity = BOTTOM | CENTER_HORIZONTAL;
                iconParams.bottomMargin = -thumbnailPadding;
                iconParams.leftMargin = iconParams.topMargin = iconParams.rightMargin = 0;
                iconParams.leftMargin = iconParams.rightMargin = 0;
                iconParams.topMargin = iconTopMargin;
                break;
            case ROTATION_270:
                iconParams.gravity = (isRtl ? END : START) | CENTER_VERTICAL;
@@ -634,7 +638,8 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
            case Surface.ROTATION_0:
            default:
                iconParams.gravity = TOP | CENTER_HORIZONTAL;
                iconParams.leftMargin = iconParams.topMargin = iconParams.rightMargin = 0;
                iconParams.leftMargin = iconParams.rightMargin = 0;
                iconParams.topMargin = iconTopMargin;
                break;
        }
        mIconView.setLayoutParams(iconParams);