diff --git a/app/build.gradle b/app/build.gradle index 4b5b5540..75606804 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -80,6 +80,6 @@ dependencies { implementation 'com.squareup.retrofit2:retrofit:2.6.2' implementation 'com.squareup.retrofit2:converter-gson:2.5.0' - implementation 'com.github.bumptech.glide:glide:3.8.0' - implementation 'com.github.bumptech.glide:okhttp3-integration:1.5.0' + implementation 'com.github.bumptech.glide:glide:4.11.0' + implementation 'com.github.bumptech.glide:okhttp3-integration:4.11.0' } diff --git a/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java b/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java index d8c7c9dc..e25bdae9 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/BlurTransformation.java @@ -19,6 +19,8 @@ import com.dkanada.gramophone.BuildConfig; import com.dkanada.gramophone.helper.StackBlur; import com.dkanada.gramophone.util.ImageUtil; +import java.security.MessageDigest; + public class BlurTransformation extends BitmapTransformation { public static final float DEFAULT_BLUR_RADIUS = 5f; @@ -33,12 +35,12 @@ public class BlurTransformation extends BitmapTransformation { } private BlurTransformation(Builder builder) { - super(builder.context); + super(); init(builder); } private BlurTransformation(Builder builder, BitmapPool bitmapPool) { - super(bitmapPool); + super(); init(builder); } @@ -138,7 +140,6 @@ public class BlurTransformation extends BitmapTransformation { } @Override - public String getId() { - return "BlurTransformation(radius=" + blurRadius + ", sampling=" + sampling + ")"; + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { } } diff --git a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java index 20656f06..503edbec 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java @@ -1,20 +1,26 @@ package com.dkanada.gramophone.glide; import android.content.Context; +import android.graphics.Bitmap; import android.os.Environment; +import androidx.annotation.NonNull; + import com.bumptech.glide.Glide; import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.Registry; import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory; import com.bumptech.glide.module.GlideModule; import com.dkanada.gramophone.App; +import com.dkanada.gramophone.glide.palette.BitmapPaletteTranscoder; +import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper; import com.dkanada.gramophone.util.PreferenceUtil; import java.io.File; public class CustomGlideModule implements GlideModule { @Override - public void applyOptions(Context context, GlideBuilder builder) { + public void applyOptions(@NonNull Context context, GlideBuilder builder) { builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() { @Override public File getCacheDirectory() { @@ -27,6 +33,7 @@ public class CustomGlideModule implements GlideModule { } @Override - public void registerComponents(Context context, Glide glide) { + public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { + registry.register(Bitmap.class, BitmapPaletteWrapper.class, new BitmapPaletteTranscoder(glide.getBitmapPool())); } } diff --git a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideRequest.java b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideRequest.java index 94bbd87c..13628039 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideRequest.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideRequest.java @@ -2,26 +2,28 @@ package com.dkanada.gramophone.glide; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; -import com.bumptech.glide.BitmapRequestBuilder; -import com.bumptech.glide.DrawableRequestBuilder; -import com.bumptech.glide.DrawableTypeRequest; +import com.bumptech.glide.RequestBuilder; import com.bumptech.glide.RequestManager; import com.bumptech.glide.load.Key; import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.bitmap.BitmapEncoder; -import com.bumptech.glide.load.resource.drawable.GlideDrawable; +import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions; +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; +import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.transition.ViewAnimationFactory; import com.bumptech.glide.signature.MediaStoreSignature; import com.dkanada.gramophone.App; import com.dkanada.gramophone.R; -import com.dkanada.gramophone.glide.palette.BitmapPaletteTranscoder; import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper; import org.jellyfin.apiclient.model.dto.ImageOptions; import org.jellyfin.apiclient.model.entities.ImageType; +import static com.bumptech.glide.GenericTransitionOptions.with; + public class CustomGlideRequest { public static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL; @@ -49,13 +51,12 @@ public class CustomGlideRequest { return new BitmapBuilder(this); } - public DrawableRequestBuilder build() { - // noinspection unchecked - return createBaseRequest(requestManager, item) - .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) - .placeholder(DEFAULT_IMAGE) - .animate(DEFAULT_ANIMATION) - .signature(createSignature(item)); + public RequestBuilder build() { + Object uri = item != null ? createUrl(item) : R.drawable.default_album_art; + + return requestManager.load(uri) + .apply(createRequestOptions(item)) + .transition(new DrawableTransitionOptions().crossFade(DEFAULT_ANIMATION)); } } @@ -66,14 +67,12 @@ public class CustomGlideRequest { this.builder = builder; } - public BitmapRequestBuilder build() { - // noinspection unchecked - return createBaseRequest(builder.requestManager, builder.item) - .asBitmap() - .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) - .placeholder(DEFAULT_IMAGE) - .animate(DEFAULT_ANIMATION) - .signature(createSignature(builder.item)); + public RequestBuilder build() { + Object uri = builder.item != null ? createUrl(builder.item) : R.drawable.default_album_art; + + return builder.requestManager.asBitmap().load(uri) + .apply(createRequestOptions(builder.item)) + .transition(new BitmapTransitionOptions().crossFade(DEFAULT_ANIMATION)); } } @@ -86,30 +85,29 @@ public class CustomGlideRequest { this.context = context; } - public BitmapRequestBuilder build() { - // noinspection unchecked - return createBaseRequest(builder.requestManager, builder.item) - .asBitmap() - .transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class) - .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) - .encoder(new BitmapEncoder(Bitmap.CompressFormat.PNG, 100)) - .placeholder(DEFAULT_IMAGE) - .animate(DEFAULT_ANIMATION) - .signature(createSignature(builder.item)); + public RequestBuilder build() { + Object uri = builder.item != null ? createUrl(builder.item) : R.drawable.default_album_art; + + return builder.requestManager.as(BitmapPaletteWrapper.class).load(uri) + .apply(createRequestOptions(builder.item)) + .transition(with(new ViewAnimationFactory<>(DEFAULT_ANIMATION))); } } - public static DrawableTypeRequest createBaseRequest(RequestManager requestManager, String item) { - if (item == null) { - return requestManager.load(R.drawable.default_album_art); - } + public static RequestOptions createRequestOptions(String item) { + return new RequestOptions() + .centerCrop() + .error(DEFAULT_IMAGE) + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .signature(createSignature(item)); + } + public static String createUrl(String item) { ImageOptions options = new ImageOptions(); options.setImageType(ImageType.Primary); options.setMaxHeight(800); - String url = App.getApiClient().GetImageUrl(item, options); - return requestManager.load(url); + return App.getApiClient().GetImageUrl(item, options); } public static Key createSignature(String item) { diff --git a/app/src/main/java/com/dkanada/gramophone/glide/CustomPaletteTarget.java b/app/src/main/java/com/dkanada/gramophone/glide/CustomPaletteTarget.java index 301ea291..e14e8648 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/CustomPaletteTarget.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/CustomPaletteTarget.java @@ -3,7 +3,9 @@ package com.dkanada.gramophone.glide; import android.graphics.drawable.Drawable; import android.widget.ImageView; -import com.bumptech.glide.request.animation.GlideAnimation; +import androidx.annotation.NonNull; + +import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.ATHUtil; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.palette.BitmapPaletteTarget; @@ -16,15 +18,16 @@ public abstract class CustomPaletteTarget extends BitmapPaletteTarget { } @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); + public void onLoadFailed(Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); onColorReady(getDefaultFooterColor()); } @Override - public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { + public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition glideAnimation) { super.onResourceReady(resource, glideAnimation); onColorReady(ThemeUtil.getColor(resource.getPalette(), getDefaultFooterColor())); + view.setImageBitmap(resource.getBitmap()); } protected int getDefaultFooterColor() { diff --git a/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteResource.java b/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteResource.java index 6d577c80..54529ad8 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteResource.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteResource.java @@ -1,5 +1,7 @@ package com.dkanada.gramophone.glide.palette; +import androidx.annotation.NonNull; + import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.util.Util; @@ -14,6 +16,12 @@ public class BitmapPaletteResource implements Resource { this.bitmapPool = bitmapPool; } + @NonNull + @Override + public Class getResourceClass() { + return BitmapPaletteWrapper.class; + } + @Override public BitmapPaletteWrapper get() { return bitmapPaletteWrapper; @@ -26,8 +34,6 @@ public class BitmapPaletteResource implements Resource { @Override public void recycle() { - if (!bitmapPool.put(bitmapPaletteWrapper.getBitmap())) { - bitmapPaletteWrapper.getBitmap().recycle(); - } + bitmapPaletteWrapper.getBitmap().recycle(); } } diff --git a/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTarget.java b/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTarget.java index 20d9a369..b7d08a90 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTarget.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTarget.java @@ -11,6 +11,5 @@ public class BitmapPaletteTarget extends ImageViewTarget { @Override protected void setResource(BitmapPaletteWrapper bitmapPaletteWrapper) { - view.setImageBitmap(bitmapPaletteWrapper.getBitmap()); } } diff --git a/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTranscoder.java b/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTranscoder.java index 3fd38c71..2a6d2b24 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTranscoder.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/palette/BitmapPaletteTranscoder.java @@ -1,9 +1,10 @@ package com.dkanada.gramophone.glide.palette; -import android.content.Context; import android.graphics.Bitmap; -import com.bumptech.glide.Glide; +import androidx.annotation.NonNull; + +import com.bumptech.glide.load.Options; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; @@ -12,23 +13,14 @@ import com.dkanada.gramophone.util.ThemeUtil; public class BitmapPaletteTranscoder implements ResourceTranscoder { private final BitmapPool bitmapPool; - public BitmapPaletteTranscoder(Context context) { - this(Glide.get(context).getBitmapPool()); - } - public BitmapPaletteTranscoder(BitmapPool bitmapPool) { this.bitmapPool = bitmapPool; } @Override - public Resource transcode(Resource bitmapResource) { - Bitmap bitmap = bitmapResource.get(); + public Resource transcode(@NonNull Resource resource, @NonNull Options options) { + Bitmap bitmap = resource.get(); BitmapPaletteWrapper bitmapPaletteWrapper = new BitmapPaletteWrapper(bitmap, ThemeUtil.generatePalette(bitmap)); return new BitmapPaletteResource(bitmapPaletteWrapper, bitmapPool); } - - @Override - public String getId() { - return "BitmapPaletteTranscoder.com.dkanada.gramophone.glide.palette"; - } } \ No newline at end of file diff --git a/app/src/main/java/com/dkanada/gramophone/service/MusicService.java b/app/src/main/java/com/dkanada/gramophone/service/MusicService.java index a58db50a..97b3cf88 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/MusicService.java +++ b/app/src/main/java/com/dkanada/gramophone/service/MusicService.java @@ -31,10 +31,10 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.bumptech.glide.BitmapRequestBuilder; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.animation.GlideAnimation; +import com.bumptech.glide.RequestBuilder; import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.transition.Transition; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.BlurTransformation; import com.dkanada.gramophone.glide.CustomGlideRequest; @@ -544,7 +544,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP if (PreferenceUtil.getInstance(this).getShowAlbumCover()) { final Point screenSize = Util.getScreenSize(MusicService.this); - final BitmapRequestBuilder request = CustomGlideRequest.Builder + final RequestBuilder request = CustomGlideRequest.Builder .from(Glide.with(MusicService.this), song.primary) .asBitmap().build(); @@ -557,13 +557,13 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP public void run() { request.into(new SimpleTarget(screenSize.x, screenSize.y) { @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); + public void onLoadFailed(Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); mediaSession.setMetadata(metaData.build()); } @Override - public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { + public void onResourceReady(Bitmap resource, Transition glideAnimation) { metaData.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, copy(resource)); mediaSession.setMetadata(metaData.build()); } diff --git a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java index c8f386b6..5c606ab6 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java +++ b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java @@ -15,9 +15,9 @@ import android.view.View; import android.widget.RemoteViews; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.dkanada.gramophone.R; @@ -86,20 +86,20 @@ public class PlayingNotificationImpl extends PlayingNotification { @Override public void run() { if (target != null) { - Glide.clear(target); + Glide.with(service).clear(target); } target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary) .generatePalette(service).build() .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { + public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { update(resource.getBitmap(), ThemeUtil.getColor(resource.getPalette(), Color.TRANSPARENT)); } @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); + public void onLoadFailed(Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); update(null, Color.WHITE); } diff --git a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java index 4201769e..354864c0 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java +++ b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java @@ -13,8 +13,8 @@ import androidx.media.app.NotificationCompat.MediaStyle; import androidx.palette.graphics.Palette; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.transition.Transition; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.CustomGlideRequest; import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper; @@ -55,13 +55,13 @@ public class PlayingNotificationImpl24 extends PlayingNotification { .generatePalette(service).build() .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { + public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { Palette palette = resource.getPalette(); update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(Color.TRANSPARENT))); } @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { + public void onLoadFailed(Drawable errorDrawable) { update(null, Color.TRANSPARENT); } diff --git a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java index 9390a373..2f4f9040 100644 --- a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java +++ b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java @@ -13,9 +13,9 @@ import android.view.View; import android.widget.RemoteViews; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.CustomGlideRequest; @@ -93,20 +93,20 @@ public class AppWidgetAlbum extends BaseAppWidget { @Override public void run() { if (target != null) { - Glide.clear(target); + Glide.with(appContext).clear(target); } target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary) .asBitmap().build() .into(new SimpleTarget(widgetImageSize, widgetImageSize) { @Override - public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { + public void onResourceReady(Bitmap resource, Transition glideAnimation) { update(resource); } @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); + public void onLoadFailed(Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); update(null); } diff --git a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java index 38fed62e..efd0f608 100644 --- a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java +++ b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java @@ -13,9 +13,9 @@ import android.view.View; import android.widget.RemoteViews; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.CustomGlideRequest; @@ -97,21 +97,22 @@ public class AppWidgetCard extends BaseAppWidget { @Override public void run() { if (target != null) { - Glide.clear(target); + Glide.with(service).clear(target); } + target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary) .generatePalette(service).build() .centerCrop() .into(new SimpleTarget(imageSize, imageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { + public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { Palette palette = resource.getPalette(); update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(service, true)))); } @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); + public void onLoadFailed(Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); update(null, MaterialValueHelper.getSecondaryTextColor(service, true)); } diff --git a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java index 34744387..c0747fef 100644 --- a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java +++ b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java @@ -13,9 +13,9 @@ import android.view.View; import android.widget.RemoteViews; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.CustomGlideRequest; @@ -90,21 +90,22 @@ public class AppWidgetClassic extends BaseAppWidget { @Override public void run() { if (target != null) { - Glide.clear(target); + Glide.with(appContext).clear(target); } + target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary) .generatePalette(service).build() .centerCrop() .into(new SimpleTarget(imageSize, imageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation glideAnimation) { + public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { Palette palette = resource.getPalette(); update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(appContext, true)))); } @Override - public void onLoadFailed(Exception e, Drawable errorDrawable) { - super.onLoadFailed(e, errorDrawable); + public void onLoadFailed(Drawable errorDrawable) { + super.onLoadFailed(errorDrawable); update(null, MaterialValueHelper.getSecondaryTextColor(appContext, true)); }