From 4ddc340f677e03807139825daa8716f7cbd59a26 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 14 May 2015 15:38:22 -0700 Subject: [PATCH] Fixing crash when drawing prediction bar divider. --- src/com/android/launcher3/AppsContainerView.java | 1 + src/com/android/launcher3/AppsGridAdapter.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/AppsContainerView.java b/src/com/android/launcher3/AppsContainerView.java index 7c1aee2280..7694cbddc0 100644 --- a/src/com/android/launcher3/AppsContainerView.java +++ b/src/com/android/launcher3/AppsContainerView.java @@ -396,6 +396,7 @@ public class AppsContainerView extends BaseContainerView implements DragSource, inset, 0, inset, 0); mContentView.setBackground(background); mAppsRecyclerView.updateBackgroundPadding(background); + mAdapter.updateBackgroundPadding(background); getRevealView().setBackground(background.getConstantState().newDrawable()); } diff --git a/src/com/android/launcher3/AppsGridAdapter.java b/src/com/android/launcher3/AppsGridAdapter.java index dfbfa01da1..d5a411e664 100644 --- a/src/com/android/launcher3/AppsGridAdapter.java +++ b/src/com/android/launcher3/AppsGridAdapter.java @@ -6,6 +6,7 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PointF; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; @@ -112,9 +113,9 @@ class AppsGridAdapter extends RecyclerView.Adapter { if (shouldDrawItemDivider(holder, items) && !hasDrawnPredictedAppsDivider) { // Draw the divider under the predicted apps - parent.getBackground().getPadding(mTmpBounds); int top = child.getTop() + child.getHeight(); - c.drawLine(mTmpBounds.left, top, parent.getWidth() - mTmpBounds.right, top, + c.drawLine(mBackgroundPadding.left, top, + parent.getWidth() - mBackgroundPadding.right, top, mPredictedAppsDividerPaint); hasDrawnPredictedAppsDivider = true; @@ -265,6 +266,7 @@ class AppsGridAdapter extends RecyclerView.Adapter { private View.OnTouchListener mTouchListener; private View.OnClickListener mIconClickListener; private View.OnLongClickListener mIconLongClickListener; + @Thunk final Rect mBackgroundPadding = new Rect(); @Thunk int mPredictionBarHeight; @Thunk int mAppsPerRow; @Thunk boolean mIsRtl; @@ -340,6 +342,14 @@ class AppsGridAdapter extends RecyclerView.Adapter { mEmptySearchText = query; } + /** + * Notifies the adapter of the background padding so that it can draw things correctly in the + * item decorator. + */ + public void updateBackgroundPadding(Drawable background) { + background.getPadding(mBackgroundPadding); + } + /** * Returns the grid layout manager. */