From 5fbe0746dd0bc8b8ef187c616084e75e0d7c8468 Mon Sep 17 00:00:00 2001 From: Winson Date: Wed, 30 Sep 2015 15:33:00 -0700 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20create=20dummy=20app=20info.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: 24539514 Change-Id: I5d14a4d9993e072451f8e7ed9a4cea219ae5d246 --- src/com/android/launcher3/BubbleTextView.java | 11 +++++++++++ src/com/android/launcher3/Launcher.java | 15 ++------------- .../launcher3/allapps/AllAppsContainerView.java | 13 ++++++++----- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java index 0742b0e50f..7e790c6abe 100644 --- a/src/com/android/launcher3/BubbleTextView.java +++ b/src/com/android/launcher3/BubbleTextView.java @@ -25,6 +25,8 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Region; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; @@ -187,6 +189,15 @@ public class BubbleTextView extends TextView verifyHighRes(); } + /** + * Used for measurement only, sets some dummy values on this view. + */ + public void applyDummyInfo() { + ColorDrawable d = new ColorDrawable(); + setIcon(mLauncher.resizeIconDrawable(d), mIconSize); + setText(""); + } + /** * Overrides the default long press timeout. */ diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 370f695862..56c8d76cab 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -4678,18 +4678,6 @@ public class Launcher extends Activity UserHandleCompat.myUserHandle()); } - /** - * Generates a dummy AppInfo for us to use to calculate BubbleTextView sizes. - */ - public AppInfo createDummyAppInfo() { - Intent intent = new Intent(); - intent.setComponent(new ComponentName(this, Launcher.class)); - PackageManager pm = getPackageManager(); - ResolveInfo info = pm.resolveActivity(intent, 0); - return new AppInfo(this, LauncherActivityInfoCompat.fromResolveInfo(info, this), - UserHandleCompat.myUserHandle(), mIconCache); - } - // TODO: This method should be a part of LauncherSearchCallback public void startDrag(View dragView, ItemInfo dragInfo, DragSource source) { dragView.setTag(dragInfo); @@ -4721,8 +4709,9 @@ public class Launcher extends Activity /** * Resizes an icon drawable to the correct icon size. */ - public void resizeIconDrawable(Drawable icon) { + public Drawable resizeIconDrawable(Drawable icon) { icon.setBounds(0, 0, mDeviceProfile.iconSizePx, mDeviceProfile.iconSizePx); + return icon; } /** diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 90f1322315..f9bb134503 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -336,15 +336,18 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc // Precalculate the prediction icon and normal icon sizes LayoutInflater layoutInflater = LayoutInflater.from(getContext()); - BubbleTextView icon = (BubbleTextView) layoutInflater.inflate(R.layout.all_apps_icon, this, false); - icon.applyFromApplicationInfo(mLauncher.createDummyAppInfo()); + BubbleTextView icon = (BubbleTextView) layoutInflater.inflate( + R.layout.all_apps_icon, this, false); + icon.applyDummyInfo(); icon.measure(MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE, MeasureSpec.AT_MOST)); - BubbleTextView predIcon = (BubbleTextView) layoutInflater.inflate(R.layout.all_apps_prediction_bar_icon, this, false); - predIcon.applyFromApplicationInfo(mLauncher.createDummyAppInfo()); + BubbleTextView predIcon = (BubbleTextView) layoutInflater.inflate( + R.layout.all_apps_prediction_bar_icon, this, false); + predIcon.applyDummyInfo(); predIcon.measure(MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE, MeasureSpec.AT_MOST)); - mAppsRecyclerView.setPremeasuredIconHeights(predIcon.getMeasuredHeight(), icon.getMeasuredHeight()); + mAppsRecyclerView.setPremeasuredIconHeights(predIcon.getMeasuredHeight(), + icon.getMeasuredHeight()); updateBackgroundAndPaddings(); }