OSDN Git Service

DO NOT MERGE - 2D Recents: Make sure thumbnail fills task view in all orientations
authorManu Cornet <manucornet@google.com>
Wed, 11 Jan 2017 20:32:54 +0000 (12:32 -0800)
committerManu Cornet <manucornet@google.com>
Fri, 13 Jan 2017 01:07:43 +0000 (01:07 +0000)
Bug: 32101881
Test: Checked layout in various situations when switching orientation
Change-Id: Iae1f142f6568890512e24787d78cfb1e15280feb

packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java

index e10f329..9069e5a 100644 (file)
@@ -19,6 +19,7 @@ package com.android.systemui.recents.views;
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapShader;
 import android.graphics.Canvas;
@@ -63,6 +64,8 @@ public class TaskViewThumbnail extends View {
     @ViewDebug.ExportedProperty(category="recents")
     private float mThumbnailScale;
     private float mFullscreenThumbnailScale;
+    /** The height, in pixels, of the task view's title bar. */
+    private int mTitleBarHeight;
     private boolean mSizeToFit = false;
     private boolean mOverlayHeaderOnThumbnailActionBar = true;
     private ActivityManager.TaskThumbnailInfo mThumbnailInfo;
@@ -104,11 +107,12 @@ public class TaskViewThumbnail extends View {
         mDrawPaint.setColorFilter(mLightingColorFilter);
         mDrawPaint.setFilterBitmap(true);
         mDrawPaint.setAntiAlias(true);
-        mCornerRadius = getResources().getDimensionPixelSize(
-                R.dimen.recents_task_view_rounded_corners_radius);
+        Resources res = getResources();
+        mCornerRadius = res.getDimensionPixelSize(R.dimen.recents_task_view_rounded_corners_radius);
         mBgFillPaint.setColor(Color.WHITE);
-        mFullscreenThumbnailScale = context.getResources().getFraction(
+        mFullscreenThumbnailScale = res.getFraction(
                 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
                 // and only draw the background color
                 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;
                 if (mDisplayOrientation == Configuration.ORIENTATION_PORTRAIT) {
                     if (mThumbnailInfo.screenOrientation == Configuration.ORIENTATION_PORTRAIT) {