From e93ddb5cb9f1e10c042ce3628f2e5333e6bb46e6 Mon Sep 17 00:00:00 2001 From: Cliff Burton Date: Tue, 29 Nov 2016 13:23:17 +0100 Subject: [PATCH] Fixed "class could not be instantiated" bug When editing layout in Android Studio 2.2.2 this missing in the "onDraw()" callback method caused a NPE. --- .../ScrollingImageView.java | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/library/src/main/java/com/q42/android/scrollingimageview/ScrollingImageView.java b/library/src/main/java/com/q42/android/scrollingimageview/ScrollingImageView.java index a724a3b..2b2ff7f 100644 --- a/library/src/main/java/com/q42/android/scrollingimageview/ScrollingImageView.java +++ b/library/src/main/java/com/q42/android/scrollingimageview/ScrollingImageView.java @@ -115,29 +115,31 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @Override public void onDraw(Canvas canvas) { - super.onDraw(canvas); - if (canvas == null || bitmaps.isEmpty()) { - return; - } + if(!isInEditMode()) { + super.onDraw(canvas); + if (canvas == null || bitmaps.isEmpty()) { + return; + } - canvas.getClipBounds(clipBounds); + canvas.getClipBounds(clipBounds); - while (offset <= -getBitmap(arrayIndex).getWidth()) { - offset += getBitmap(arrayIndex).getWidth(); - arrayIndex = (arrayIndex + 1) % scene.length; - } + while (offset <= -getBitmap(arrayIndex).getWidth()) { + offset += getBitmap(arrayIndex).getWidth(); + arrayIndex = (arrayIndex + 1) % scene.length; + } - float left = offset; - for (int i = 0; left < clipBounds.width(); i++) { - Bitmap bitmap = getBitmap((arrayIndex + i) % scene.length); - int width = bitmap.getWidth(); - canvas.drawBitmap(bitmap, getBitmapLeft(width, left), 0, null); - left += width; - } + float left = offset; + for (int i = 0; left < clipBounds.width(); i++) { + Bitmap bitmap = getBitmap((arrayIndex + i) % scene.length); + int width = bitmap.getWidth(); + canvas.drawBitmap(bitmap, getBitmapLeft(width, left), 0, null); + left += width; + } - if (isStarted && speed != 0) { - offset -= abs(speed); - postInvalidateOnAnimation(); + if (isStarted && speed != 0) { + offset -= abs(speed); + postInvalidateOnAnimation(); + } } }