From ea8ac5a2234cc6e384a1902d5b0e6553939beee2 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 14 Jun 2021 11:40:10 -0700 Subject: [PATCH] Only inflating taskbar views for valid items Also enabling view cache for folders Bug: 187353581 Test: Manual Change-Id: I5bc695fd86475f30611bc6b362b4ae93c48c26bb --- .../taskbar/TaskbarActivityContext.java | 7 ++ .../taskbar/TaskbarDragController.java | 7 +- .../launcher3/taskbar/TaskbarView.java | 93 ++++++++++--------- 3 files changed, 62 insertions(+), 45 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 6e477000dd..aaf0d3fac9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -56,6 +56,7 @@ import com.android.launcher3.touch.ItemClickHandler; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.Themes; import com.android.launcher3.util.TraceHelper; +import com.android.launcher3.util.ViewCache; import com.android.launcher3.views.ActivityContext; import com.android.quickstep.SysUINavigationMode; import com.android.quickstep.SysUINavigationMode.Mode; @@ -88,6 +89,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private int mLastRequestedNonFullscreenHeight; private final SysUINavigationMode.Mode mNavMode; + private final ViewCache mViewCache = new ViewCache(); private final boolean mIsSafeModeEnabled; @@ -187,6 +189,11 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ return mControllers.taskbarDragController; } + @Override + public ViewCache getViewCache() { + return mViewCache; + } + /** * Sets a new data-source for this taskbar instance */ diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java index 4294eb565f..67ebc02a74 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java @@ -15,6 +15,9 @@ */ package com.android.launcher3.taskbar; +import static android.view.View.INVISIBLE; +import static android.view.View.VISIBLE; + import android.content.ClipData; import android.content.ClipDescription; import android.content.Intent; @@ -86,7 +89,7 @@ public class TaskbarDragController extends DragController { startInternalDrag(btv); - btv.setAlpha(0); + btv.setVisibility(INVISIBLE); }); return true; } @@ -293,7 +296,7 @@ public class TaskbarDragController extends DragController iconStart) { @@ -246,12 +255,10 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar mIconLayoutBounds.bottom = mIconLayoutBounds.top + mIconTouchSize; for (int i = 0; i < count; i++) { View child = getChildAt(i); - if (child.getVisibility() == VISIBLE) { - iconStart += mItemMarginLeftRight; - int iconEnd = iconStart + mIconTouchSize; - child.layout(iconStart, mIconLayoutBounds.top, iconEnd, mIconLayoutBounds.bottom); - iconStart = iconEnd + mItemMarginLeftRight; - } + iconStart += mItemMarginLeftRight; + int iconEnd = iconStart + mIconTouchSize; + child.layout(iconStart, mIconLayoutBounds.top, iconEnd, mIconLayoutBounds.bottom); + iconStart = iconEnd + mItemMarginLeftRight; } mIconLayoutBounds.right = iconStart; } @@ -307,7 +314,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar } private View inflate(@LayoutRes int layoutResId) { - return mActivityContext.getLayoutInflater().inflate(layoutResId, this, false); + return mActivityContext.getViewCache().getView(layoutResId, mActivityContext, this); } @Override