Skip to content

Commit f94cf4a

Browse files
committed
Make sure GlideImageLoader returns a BtimapDrawable and correctly adapt the bitmap density
1 parent 05a8bf5 commit f94cf4a

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

glide-loader/src/main/java/org/wordpress/aztec/glideloader/GlideImageLoader.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package org.wordpress.aztec.glideloader
22

33
import android.content.Context
4+
import android.graphics.Bitmap
5+
import android.graphics.drawable.BitmapDrawable
46
import android.graphics.drawable.Drawable
5-
7+
import android.util.DisplayMetrics
68
import com.bumptech.glide.Glide
7-
import com.bumptech.glide.load.resource.drawable.GlideDrawable
89
import com.bumptech.glide.request.Request
910
import com.bumptech.glide.request.animation.GlideAnimation
1011
import com.bumptech.glide.request.target.SizeReadyCallback
1112
import com.bumptech.glide.request.target.Target
12-
1313
import org.wordpress.aztec.Html
1414

1515

1616
class GlideImageLoader(private val context: Context) : Html.ImageGetter {
1717

1818
override fun loadImage(source: String, callbacks: Html.ImageGetter.Callbacks, maxWidth: Int) {
19-
Glide.with(context).load(source).fitCenter().into(object : Target<GlideDrawable> {
19+
Glide.with(context).load(source).asBitmap().fitCenter().into(object : Target<Bitmap> {
2020
override fun onLoadStarted(placeholder: Drawable?) {
2121
callbacks.onImageLoading(placeholder)
2222
}
@@ -25,8 +25,11 @@ class GlideImageLoader(private val context: Context) : Html.ImageGetter {
2525
callbacks.onImageFailed()
2626
}
2727

28-
override fun onResourceReady(resource: GlideDrawable?, glideAnimation: GlideAnimation<in GlideDrawable>?) {
29-
callbacks.onImageLoaded(resource)
28+
override fun onResourceReady(resource: Bitmap?, glideAnimation: GlideAnimation<in Bitmap>?) {
29+
// By default, BitmapFactory.decodeFile sets the bitmap's density to the device default so, we need
30+
// to correctly set the input density to 160 ourselves.
31+
resource?.density = DisplayMetrics.DENSITY_DEFAULT
32+
callbacks.onImageLoaded(BitmapDrawable(context.resources, resource))
3033
}
3134

3235
override fun onLoadCleared(placeholder: Drawable?) {}

0 commit comments

Comments
 (0)