DO NOT MERGE - 2D Recents: Make sure thumbnail fills task view in all orientations

Bug: 32101881
Test: Checked layout in various situations when switching orientation
Change-Id: Iae1f142f6568890512e24787d78cfb1e15280feb
This commit is contained in:
Manu Cornet
2017-01-11 12:32:54 -08:00
parent a00c235600
commit 569cbecd92

View File

@@ -19,6 +19,7 @@ package com.android.systemui.recents.views;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapShader; import android.graphics.BitmapShader;
import android.graphics.Canvas; import android.graphics.Canvas;
@@ -63,6 +64,8 @@ public class TaskViewThumbnail extends View {
@ViewDebug.ExportedProperty(category="recents") @ViewDebug.ExportedProperty(category="recents")
private float mThumbnailScale; private float mThumbnailScale;
private float mFullscreenThumbnailScale; private float mFullscreenThumbnailScale;
/** The height, in pixels, of the task view's title bar. */
private int mTitleBarHeight;
private boolean mSizeToFit = false; private boolean mSizeToFit = false;
private boolean mOverlayHeaderOnThumbnailActionBar = true; private boolean mOverlayHeaderOnThumbnailActionBar = true;
private ActivityManager.TaskThumbnailInfo mThumbnailInfo; private ActivityManager.TaskThumbnailInfo mThumbnailInfo;
@@ -104,11 +107,12 @@ public class TaskViewThumbnail extends View {
mDrawPaint.setColorFilter(mLightingColorFilter); mDrawPaint.setColorFilter(mLightingColorFilter);
mDrawPaint.setFilterBitmap(true); mDrawPaint.setFilterBitmap(true);
mDrawPaint.setAntiAlias(true); mDrawPaint.setAntiAlias(true);
mCornerRadius = getResources().getDimensionPixelSize( Resources res = getResources();
R.dimen.recents_task_view_rounded_corners_radius); mCornerRadius = res.getDimensionPixelSize(R.dimen.recents_task_view_rounded_corners_radius);
mBgFillPaint.setColor(Color.WHITE); mBgFillPaint.setColor(Color.WHITE);
mFullscreenThumbnailScale = context.getResources().getFraction( mFullscreenThumbnailScale = res.getFraction(
com.android.internal.R.fraction.thumbnail_fullscreen_scale, 1, 1); com.android.internal.R.fraction.thumbnail_fullscreen_scale, 1, 1);
mTitleBarHeight = res.getDimensionPixelSize(R.dimen.recents_grid_task_view_header_height);
} }
/** /**
@@ -237,7 +241,20 @@ public class TaskViewThumbnail extends View {
// If we haven't measured or the thumbnail is invalid, skip the thumbnail drawing // If we haven't measured or the thumbnail is invalid, skip the thumbnail drawing
// and only draw the background color // and only draw the background color
mThumbnailScale = 0f; mThumbnailScale = 0f;
} else if (isStackTask && !mSizeToFit) { } else if (mSizeToFit) {
// Make sure we fill the entire space regardless of the orientation.
float viewAspectRatio = (float) mTaskViewRect.width() /
(float) (mTaskViewRect.height() - mTitleBarHeight);
float thumbnailAspectRatio =
(float) mThumbnailRect.width() / (float) mThumbnailRect.height();
if (viewAspectRatio > thumbnailAspectRatio) {
mThumbnailScale =
(float) mTaskViewRect.width() / (float) mThumbnailRect.width();
} else {
mThumbnailScale = (float) (mTaskViewRect.height() - mTitleBarHeight)
/ (float) mThumbnailRect.height();
}
} else if (isStackTask) {
float invThumbnailScale = 1f / mFullscreenThumbnailScale; float invThumbnailScale = 1f / mFullscreenThumbnailScale;
if (mDisplayOrientation == Configuration.ORIENTATION_PORTRAIT) { if (mDisplayOrientation == Configuration.ORIENTATION_PORTRAIT) {
if (mThumbnailInfo.screenOrientation == Configuration.ORIENTATION_PORTRAIT) { if (mThumbnailInfo.screenOrientation == Configuration.ORIENTATION_PORTRAIT) {