فهرست منبع

fix missing conversion

tobiasKaminsky 7 سال پیش
والد
کامیت
d16ebf6e9d

+ 1 - 1
src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -1113,7 +1113,7 @@ public class ThumbnailsCacheManager {
         private final WeakReference<AvatarGenerationTask> avatarWorkerTaskReference;
 
         public AsyncAvatarDrawable(Resources res, Drawable bitmap, AvatarGenerationTask avatarWorkerTask) {
-            super(res, bitmap);
+            super(res, BitmapUtils.drawableToBitmap(bitmap));
             avatarWorkerTaskReference = new WeakReference<>(avatarWorkerTask);
         }
 

+ 26 - 0
src/main/java/com/owncloud/android/utils/BitmapUtils.java

@@ -22,7 +22,10 @@ import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.BitmapFactory.Options;
+import android.graphics.Canvas;
 import android.graphics.Matrix;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
 import android.support.media.ExifInterface;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
 import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
@@ -376,4 +379,27 @@ public class BitmapUtils {
         roundedBitmap.setCircular(true);
         return roundedBitmap;
     }
+
+    public static Bitmap drawableToBitmap(Drawable drawable) {
+        Bitmap bitmap;
+
+        if (drawable instanceof BitmapDrawable) {
+            BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
+            if (bitmapDrawable.getBitmap() != null) {
+                return bitmapDrawable.getBitmap();
+            }
+        }
+
+        if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
+            bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
+        } else {
+            bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(),
+                    Bitmap.Config.ARGB_8888);
+        }
+
+        Canvas canvas = new Canvas(bitmap);
+        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+        drawable.draw(canvas);
+        return bitmap;
+    }
 }

+ 1 - 0
src/main/java/com/owncloud/android/utils/DisplayUtils.java

@@ -30,6 +30,7 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
+import android.graphics.Bitmap;
 import android.graphics.Color;
 import android.graphics.Point;
 import android.graphics.drawable.Drawable;