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

Commit ea347d3c authored by Jaewan Kim's avatar Jaewan Kim
Browse files

Fix thumbnail transition animation when Recents is shown with PIP

Bug: 28505382
Change-Id: I0565ba8dc3419bb9b34809d03e9ef8b484dba1d9
parent be1cd9f5
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -38,11 +38,14 @@ import com.android.systemui.recents.model.TaskStack;
import com.android.systemui.recents.model.ThumbnailData;
import com.android.systemui.recents.tv.views.TaskCardView;
import com.android.systemui.statusbar.tv.TvStatusBar;
import com.android.systemui.tv.pip.PipManager;

public class RecentsTvImpl extends RecentsImpl{
    public final static String RECENTS_TV_ACTIVITY =
            "com.android.systemui.recents.tv.RecentsTvActivity";

    private static final PipManager mPipManager = PipManager.getInstance();

    public RecentsTvImpl(Context context) {
        super(context);
    }
@@ -120,7 +123,8 @@ public class RecentsTvImpl extends RecentsImpl{
     */
    private ActivityOptions getThumbnailTransitionActivityOptionsForTV(
            ActivityManager.RunningTaskInfo runningTask, int numTasks) {
        Rect rect = TaskCardView.getStartingCardThumbnailRect(mContext, numTasks);
        Rect rect = TaskCardView.getStartingCardThumbnailRect(
            mContext, !mPipManager.isPipShown(), numTasks);
        SystemServicesProxy ssp = Recents.getSystemServices();
        ThumbnailData thumbnailData = ssp.getTaskThumbnail(runningTask.id);
        if (thumbnailData.thumbnail != null) {
+13 −8
Original line number Diff line number Diff line
@@ -110,20 +110,24 @@ public class TaskCardView extends LinearLayout {
        return r;
    }

    public static Rect getStartingCardThumbnailRect(Context context, int numberOfTasks) {
    public static Rect getStartingCardThumbnailRect(
            Context context, boolean hasFocus, int numberOfTasks) {
        if(numberOfTasks > 1) {
            return getStartingCardThumbnailRectForStartPosition(context);
            return getStartingCardThumbnailRectForStartPosition(context, hasFocus);
        } else {
            return getStartingCardThumbnailRectForFocusedPosition(context);
            return getStartingCardThumbnailRectForFocusedPosition(context, hasFocus);
        }
    }

    private static Rect getStartingCardThumbnailRectForStartPosition(Context context) {
    private static Rect getStartingCardThumbnailRectForStartPosition(
            Context context, boolean hasFocus) {
        Resources res = context.getResources();

        int width = res.getDimensionPixelOffset(R.dimen.recents_tv_card_width);
        int totalSpacing = res.getDimensionPixelOffset(R.dimen.recents_tv_gird_card_spacing) * 2
                + res.getDimensionPixelOffset(R.dimen.recents_tv_gird_focused_card_delta);
        int totalSpacing = res.getDimensionPixelOffset(R.dimen.recents_tv_gird_card_spacing) * 2;
        if (hasFocus) {
            totalSpacing += res.getDimensionPixelOffset(R.dimen.recents_tv_gird_focused_card_delta);
        }
        int height = res.getDimensionPixelOffset(R.dimen.recents_tv_screenshot_height);
        int topMargin = res.getDimensionPixelOffset(R.dimen.recents_tv_gird_row_top_margin);
        int headerHeight = res.getDimensionPixelOffset(R.dimen.recents_tv_card_extra_badge_size) +
@@ -141,12 +145,13 @@ public class TaskCardView extends LinearLayout {
                topMargin + headerHeight + height);
    }

    private static Rect getStartingCardThumbnailRectForFocusedPosition(Context context) {
    private static Rect getStartingCardThumbnailRectForFocusedPosition(
            Context context, boolean hasFocus) {
        Resources res = context.getResources();

        TypedValue out = new TypedValue();
        res.getValue(R.integer.selected_scale, out, true);
        float scale = out.getFloat();
        float scale = hasFocus ? out.getFloat() : 1;

        int width = res.getDimensionPixelOffset(R.dimen.recents_tv_card_width);
        int widthDelta = (int) (width * scale - width);