Niedzielski has uploaded a new change for review. https://gerrit.wikimedia.org/r/243980
Change subject: Fix Exception when sharing a fact ...................................................................... Fix Exception when sharing a fact This patch is a partial revert of 3235488. ImageView may recycle its Drawable. A reference cannot be held so a deep copy is needed. Bug: T114658 Change-Id: I0a8802e2c6d9b81a85a4f7bdd7506067c4ab88e2 --- M app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java M app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java 2 files changed, 16 insertions(+), 8 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/80/243980/1 diff --git a/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java b/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java index 161c086..7115a51 100644 --- a/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java +++ b/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java @@ -7,7 +7,6 @@ import android.graphics.Paint; import android.graphics.PointF; import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.FaceDetector; import android.support.annotation.NonNull; @@ -43,12 +42,6 @@ public void setOnImageLoadListener(@Nullable OnImageLoadListener listener) { this.listener = listener == null ? new DefaultListener() : listener; - } - - @Nullable public Bitmap getImageBitmap() { - return getDrawable() instanceof BitmapDrawable - ? ((BitmapDrawable) getDrawable()).getBitmap() - : null; } @Override diff --git a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java index 8744daf..8710701 100755 --- a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java +++ b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java @@ -2,6 +2,7 @@ import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.Drawable; @@ -157,7 +158,7 @@ } @Nullable public Bitmap getLeadImageBitmap() { - return image.getImageBitmap(); + return leadImagesEnabled ? newBitmapFromView(image) : null; } public boolean isLeadImageEnabled() { @@ -235,6 +236,20 @@ / displayDensity), listener, sequence); } + // ideas from: + // http://stackoverflow.com/questions/2801116/converting-a-view-to-bitmap-without-displaying-it-in-android + // View has to be already displayed. Note: a copy of the ImageView's Drawable must be made in + // some fashion as it may be recycled. See T114658. + private Bitmap newBitmapFromView(ImageView view) { + // Define a bitmap with the same size as the view + Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), + Bitmap.Config.ARGB_8888); + // Bind a canvas to it + Canvas canvas = new Canvas(returnedBitmap); + view.draw(canvas); + return returnedBitmap; + } + /** * Intermediate step in the layout process: * Recursive function that will dynamically size down the page title TextView if the page title -- To view, visit https://gerrit.wikimedia.org/r/243980 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0a8802e2c6d9b81a85a4f7bdd7506067c4ab88e2 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits