Also reset mBadgeScale to 0 when recycling view.

When left as 1f, the drawBadgeIfNecessary thinks that there
is still a badge -- which results in a NPE when trying to draw
the badge.

Bug: 68324671
Change-Id: I4eedb5825b3a6429c99de0466a77d368a39b1951
This commit is contained in:
Jon Miranda
2017-11-01 15:40:22 -07:00
parent 5254944a68
commit 48043ee0d6
2 changed files with 8 additions and 0 deletions

View File

@@ -183,6 +183,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver {
public void reset() {
mBadgeInfo = null;
mBadgePalette = null;
mBadgeScale = 0f;
mForceHideBadge = false;
}

View File

@@ -26,6 +26,7 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Shader;
import android.support.annotation.Nullable;
import android.util.Log;
import android.util.SparseArray;
import com.android.launcher3.R;
@@ -38,6 +39,8 @@ import com.android.launcher3.graphics.ShadowGenerator;
*/
public class BadgeRenderer {
private static final String TAG = "BadgeRenderer";
private static final boolean DOTS_ONLY = true;
// The badge sizes are defined as percentages of the app icon size.
@@ -95,6 +98,10 @@ public class BadgeRenderer {
*/
public void draw(Canvas canvas, IconPalette palette, @Nullable BadgeInfo badgeInfo,
Rect iconBounds, float badgeScale, Point spaceForOffset) {
if (palette == null || iconBounds == null || spaceForOffset == null) {
Log.e(TAG, "Invalid null argument(s) passed in call to draw.");
return;
}
mTextPaint.setColor(palette.textColor);
IconDrawer iconDrawer = badgeInfo != null && badgeInfo.isIconLarge()
? mLargeIconDrawer : mSmallIconDrawer;