From 7ce1988d2eb746dbaf461a42d9e91712396a8ed8 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Thu, 19 May 2016 11:46:02 -0400 Subject: [PATCH] Fix NullPointerException on RingView --- .../org/isoron/uhabits/views/RingView.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/views/RingView.java b/app/src/main/java/org/isoron/uhabits/views/RingView.java index de7ee345a..1ab2a9024 100644 --- a/app/src/main/java/org/isoron/uhabits/views/RingView.java +++ b/app/src/main/java/org/isoron/uhabits/views/RingView.java @@ -27,6 +27,7 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; +import android.support.annotation.Nullable; import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; @@ -57,8 +58,10 @@ public class RingView extends View private float textSize; private boolean enableFontAwesome; + @Nullable private Bitmap drawingCache; private Canvas cacheCanvas; + private boolean isTransparencyEnabled; public RingView(Context context) @@ -175,12 +178,14 @@ public class RingView extends View { super.onSizeChanged(w, h, oldw, oldh); - if(isTransparencyEnabled) - { - if (drawingCache != null) drawingCache.recycle(); - drawingCache = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888); - cacheCanvas = new Canvas(drawingCache); - } + if(isTransparencyEnabled) reallocateCache(); + } + + private void reallocateCache() + { + if (drawingCache != null) drawingCache.recycle(); + drawingCache = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888); + cacheCanvas = new Canvas(drawingCache); } @Override @@ -191,6 +196,7 @@ public class RingView extends View if(isTransparencyEnabled) { + if(drawingCache == null) reallocateCache(); activeCanvas = cacheCanvas; drawingCache.eraseColor(Color.TRANSPARENT); }