diff --git a/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index deb5c72070de..dc820c0ce92b 100644 --- a/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/app/src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -112,11 +112,11 @@ public final class ThumbnailsCacheManager { public static final int THUMBNAIL_SIZE_IN_KB = 512; private static final int RESIZED_IMAGE_SIZE_IN_KB = 10240; - public static final Bitmap mDefaultImg = BitmapFactory.decodeResource(MainApp.getAppContext().getResources(), - R.drawable.file_image); + public static final Bitmap mDefaultImg = BitmapUtils.rasterizeDrawable(R.drawable.file_image, + getThumbnailDimension()); - public static final Bitmap mDefaultVideo = BitmapFactory.decodeResource(MainApp.getAppContext().getResources(), - R.drawable.file_movie); + public static final Bitmap mDefaultVideo = BitmapUtils.rasterizeDrawable(R.drawable.file_movie, + getThumbnailDimension()); private ThumbnailsCacheManager() { } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index 6ac40163ec51..dff62b894161 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -19,7 +19,6 @@ import android.content.res.ColorStateList; import android.content.res.Configuration; import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; @@ -453,14 +452,7 @@ public void onResourceReady(@NonNull Drawable resource, @Nullable Transition + ImageViewCompat.setImageTintList(binding.thumbnail, null) + if (entryType == SearchResultEntryType.Avatar) { GlideHelper.loadCircularBitmapIntoImageView( context, diff --git a/app/src/main/java/com/owncloud/android/utils/BitmapUtils.kt b/app/src/main/java/com/owncloud/android/utils/BitmapUtils.kt index 73489cfed6de..77356ea11291 100644 --- a/app/src/main/java/com/owncloud/android/utils/BitmapUtils.kt +++ b/app/src/main/java/com/owncloud/android/utils/BitmapUtils.kt @@ -22,8 +22,11 @@ import android.graphics.Rect import android.graphics.RectF import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable +import android.graphics.drawable.PictureDrawable import android.widget.ImageView import androidx.annotation.DimenRes +import androidx.annotation.DrawableRes +import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.applyCanvas import androidx.core.graphics.blue import androidx.core.graphics.createBitmap @@ -43,6 +46,7 @@ import com.owncloud.android.lib.resources.users.StatusType import com.owncloud.android.ui.StatusDrawable import java.security.MessageDigest import java.security.NoSuchAlgorithmException +import kotlin.math.max import kotlin.math.min import kotlin.math.roundToInt import com.nextcloud.utils.decodeSampledBitmapFromFile as decodeSampledBitmap @@ -124,6 +128,24 @@ object BitmapUtils { return bitmap.scale((scale * width).roundToInt(), (scale * height).roundToInt()) } + @JvmStatic + fun rasterizeDrawable(@DrawableRes drawableId: Int, size: Int): Bitmap { + val drawable = checkNotNull(ResourcesCompat.getDrawable(resources, drawableId, null)) + return drawableToBitmap(drawable, size, size) + } + + @JvmStatic + fun rasterizePictureDrawable(pictureDrawable: PictureDrawable, maxSize: Int): Bitmap { + val width = pictureDrawable.intrinsicWidth + val height = pictureDrawable.intrinsicHeight + val factor = min(1f, maxSize.toFloat() / max(width, height)) + + return createBitmap((width * factor).roundToInt(), (height * factor).roundToInt()).applyCanvas { + scale(factor, factor) + drawPicture(pictureDrawable.picture) + } + } + @Suppress("TooGenericExceptionCaught") private fun readExifOrientation(storagePath: String): Int = try { ExifInterface(storagePath).getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL)