bump glide version
This commit is contained in:
parent
6faab1db2b
commit
2e686ef44e
14 changed files with 103 additions and 95 deletions
|
|
@ -80,6 +80,6 @@ dependencies {
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
|
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
|
||||||
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
|
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
|
||||||
|
|
||||||
implementation 'com.github.bumptech.glide:glide:3.8.0'
|
implementation 'com.github.bumptech.glide:glide:4.11.0'
|
||||||
implementation 'com.github.bumptech.glide:okhttp3-integration:1.5.0'
|
implementation 'com.github.bumptech.glide:okhttp3-integration:4.11.0'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ import com.dkanada.gramophone.BuildConfig;
|
||||||
import com.dkanada.gramophone.helper.StackBlur;
|
import com.dkanada.gramophone.helper.StackBlur;
|
||||||
import com.dkanada.gramophone.util.ImageUtil;
|
import com.dkanada.gramophone.util.ImageUtil;
|
||||||
|
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
|
||||||
public class BlurTransformation extends BitmapTransformation {
|
public class BlurTransformation extends BitmapTransformation {
|
||||||
public static final float DEFAULT_BLUR_RADIUS = 5f;
|
public static final float DEFAULT_BLUR_RADIUS = 5f;
|
||||||
|
|
||||||
|
|
@ -33,12 +35,12 @@ public class BlurTransformation extends BitmapTransformation {
|
||||||
}
|
}
|
||||||
|
|
||||||
private BlurTransformation(Builder builder) {
|
private BlurTransformation(Builder builder) {
|
||||||
super(builder.context);
|
super();
|
||||||
init(builder);
|
init(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
private BlurTransformation(Builder builder, BitmapPool bitmapPool) {
|
private BlurTransformation(Builder builder, BitmapPool bitmapPool) {
|
||||||
super(bitmapPool);
|
super();
|
||||||
init(builder);
|
init(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -138,7 +140,6 @@ public class BlurTransformation extends BitmapTransformation {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
|
||||||
return "BlurTransformation(radius=" + blurRadius + ", sampling=" + sampling + ")";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,26 @@
|
||||||
package com.dkanada.gramophone.glide;
|
package com.dkanada.gramophone.glide;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.GlideBuilder;
|
import com.bumptech.glide.GlideBuilder;
|
||||||
|
import com.bumptech.glide.Registry;
|
||||||
import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory;
|
import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory;
|
||||||
import com.bumptech.glide.module.GlideModule;
|
import com.bumptech.glide.module.GlideModule;
|
||||||
import com.dkanada.gramophone.App;
|
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 com.dkanada.gramophone.util.PreferenceUtil;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
public class CustomGlideModule implements GlideModule {
|
public class CustomGlideModule implements GlideModule {
|
||||||
@Override
|
@Override
|
||||||
public void applyOptions(Context context, GlideBuilder builder) {
|
public void applyOptions(@NonNull Context context, GlideBuilder builder) {
|
||||||
builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() {
|
builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() {
|
||||||
@Override
|
@Override
|
||||||
public File getCacheDirectory() {
|
public File getCacheDirectory() {
|
||||||
|
|
@ -27,6 +33,7 @@ public class CustomGlideModule implements GlideModule {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,26 +2,28 @@ package com.dkanada.gramophone.glide;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.bumptech.glide.BitmapRequestBuilder;
|
import com.bumptech.glide.RequestBuilder;
|
||||||
import com.bumptech.glide.DrawableRequestBuilder;
|
|
||||||
import com.bumptech.glide.DrawableTypeRequest;
|
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
import com.bumptech.glide.load.Key;
|
import com.bumptech.glide.load.Key;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapEncoder;
|
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
|
||||||
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
|
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.bumptech.glide.signature.MediaStoreSignature;
|
||||||
import com.dkanada.gramophone.App;
|
import com.dkanada.gramophone.App;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.palette.BitmapPaletteTranscoder;
|
|
||||||
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
|
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
|
||||||
|
|
||||||
import org.jellyfin.apiclient.model.dto.ImageOptions;
|
import org.jellyfin.apiclient.model.dto.ImageOptions;
|
||||||
import org.jellyfin.apiclient.model.entities.ImageType;
|
import org.jellyfin.apiclient.model.entities.ImageType;
|
||||||
|
|
||||||
|
import static com.bumptech.glide.GenericTransitionOptions.with;
|
||||||
|
|
||||||
public class CustomGlideRequest {
|
public class CustomGlideRequest {
|
||||||
public static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL;
|
public static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.ALL;
|
||||||
|
|
||||||
|
|
@ -49,13 +51,12 @@ public class CustomGlideRequest {
|
||||||
return new BitmapBuilder(this);
|
return new BitmapBuilder(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DrawableRequestBuilder<GlideDrawable> build() {
|
public RequestBuilder<Drawable> build() {
|
||||||
// noinspection unchecked
|
Object uri = item != null ? createUrl(item) : R.drawable.default_album_art;
|
||||||
return createBaseRequest(requestManager, item)
|
|
||||||
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
|
return requestManager.load(uri)
|
||||||
.placeholder(DEFAULT_IMAGE)
|
.apply(createRequestOptions(item))
|
||||||
.animate(DEFAULT_ANIMATION)
|
.transition(new DrawableTransitionOptions().crossFade(DEFAULT_ANIMATION));
|
||||||
.signature(createSignature(item));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,14 +67,12 @@ public class CustomGlideRequest {
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BitmapRequestBuilder<?, Bitmap> build() {
|
public RequestBuilder<Bitmap> build() {
|
||||||
// noinspection unchecked
|
Object uri = builder.item != null ? createUrl(builder.item) : R.drawable.default_album_art;
|
||||||
return createBaseRequest(builder.requestManager, builder.item)
|
|
||||||
.asBitmap()
|
return builder.requestManager.asBitmap().load(uri)
|
||||||
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
|
.apply(createRequestOptions(builder.item))
|
||||||
.placeholder(DEFAULT_IMAGE)
|
.transition(new BitmapTransitionOptions().crossFade(DEFAULT_ANIMATION));
|
||||||
.animate(DEFAULT_ANIMATION)
|
|
||||||
.signature(createSignature(builder.item));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -86,30 +85,29 @@ public class CustomGlideRequest {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BitmapRequestBuilder<?, BitmapPaletteWrapper> build() {
|
public RequestBuilder<BitmapPaletteWrapper> build() {
|
||||||
// noinspection unchecked
|
Object uri = builder.item != null ? createUrl(builder.item) : R.drawable.default_album_art;
|
||||||
return createBaseRequest(builder.requestManager, builder.item)
|
|
||||||
.asBitmap()
|
return builder.requestManager.as(BitmapPaletteWrapper.class).load(uri)
|
||||||
.transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class)
|
.apply(createRequestOptions(builder.item))
|
||||||
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
|
.transition(with(new ViewAnimationFactory<>(DEFAULT_ANIMATION)));
|
||||||
.encoder(new BitmapEncoder(Bitmap.CompressFormat.PNG, 100))
|
|
||||||
.placeholder(DEFAULT_IMAGE)
|
|
||||||
.animate(DEFAULT_ANIMATION)
|
|
||||||
.signature(createSignature(builder.item));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DrawableTypeRequest createBaseRequest(RequestManager requestManager, String item) {
|
public static RequestOptions createRequestOptions(String item) {
|
||||||
if (item == null) {
|
return new RequestOptions()
|
||||||
return requestManager.load(R.drawable.default_album_art);
|
.centerCrop()
|
||||||
}
|
.error(DEFAULT_IMAGE)
|
||||||
|
.diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY)
|
||||||
|
.signature(createSignature(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String createUrl(String item) {
|
||||||
ImageOptions options = new ImageOptions();
|
ImageOptions options = new ImageOptions();
|
||||||
options.setImageType(ImageType.Primary);
|
options.setImageType(ImageType.Primary);
|
||||||
options.setMaxHeight(800);
|
options.setMaxHeight(800);
|
||||||
|
|
||||||
String url = App.getApiClient().GetImageUrl(item, options);
|
return App.getApiClient().GetImageUrl(item, options);
|
||||||
return requestManager.load(url);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Key createSignature(String item) {
|
public static Key createSignature(String item) {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@ package com.dkanada.gramophone.glide;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.widget.ImageView;
|
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.kabouzeid.appthemehelper.util.ATHUtil;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.palette.BitmapPaletteTarget;
|
import com.dkanada.gramophone.glide.palette.BitmapPaletteTarget;
|
||||||
|
|
@ -16,15 +18,16 @@ public abstract class CustomPaletteTarget extends BitmapPaletteTarget {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
super.onLoadFailed(e, errorDrawable);
|
super.onLoadFailed(errorDrawable);
|
||||||
onColorReady(getDefaultFooterColor());
|
onColorReady(getDefaultFooterColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
|
public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition<? super BitmapPaletteWrapper> glideAnimation) {
|
||||||
super.onResourceReady(resource, glideAnimation);
|
super.onResourceReady(resource, glideAnimation);
|
||||||
onColorReady(ThemeUtil.getColor(resource.getPalette(), getDefaultFooterColor()));
|
onColorReady(ThemeUtil.getColor(resource.getPalette(), getDefaultFooterColor()));
|
||||||
|
view.setImageBitmap(resource.getBitmap());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int getDefaultFooterColor() {
|
protected int getDefaultFooterColor() {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.dkanada.gramophone.glide.palette;
|
package com.dkanada.gramophone.glide.palette;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.bumptech.glide.load.engine.Resource;
|
import com.bumptech.glide.load.engine.Resource;
|
||||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
|
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
|
||||||
import com.bumptech.glide.util.Util;
|
import com.bumptech.glide.util.Util;
|
||||||
|
|
@ -14,6 +16,12 @@ public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> {
|
||||||
this.bitmapPool = bitmapPool;
|
this.bitmapPool = bitmapPool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Class<BitmapPaletteWrapper> getResourceClass() {
|
||||||
|
return BitmapPaletteWrapper.class;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BitmapPaletteWrapper get() {
|
public BitmapPaletteWrapper get() {
|
||||||
return bitmapPaletteWrapper;
|
return bitmapPaletteWrapper;
|
||||||
|
|
@ -26,8 +34,6 @@ public class BitmapPaletteResource implements Resource<BitmapPaletteWrapper> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recycle() {
|
public void recycle() {
|
||||||
if (!bitmapPool.put(bitmapPaletteWrapper.getBitmap())) {
|
bitmapPaletteWrapper.getBitmap().recycle();
|
||||||
bitmapPaletteWrapper.getBitmap().recycle();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,5 @@ public class BitmapPaletteTarget extends ImageViewTarget<BitmapPaletteWrapper> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setResource(BitmapPaletteWrapper bitmapPaletteWrapper) {
|
protected void setResource(BitmapPaletteWrapper bitmapPaletteWrapper) {
|
||||||
view.setImageBitmap(bitmapPaletteWrapper.getBitmap());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.dkanada.gramophone.glide.palette;
|
package com.dkanada.gramophone.glide.palette;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.graphics.Bitmap;
|
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.Resource;
|
||||||
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
|
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
|
||||||
import com.bumptech.glide.load.resource.transcode.ResourceTranscoder;
|
import com.bumptech.glide.load.resource.transcode.ResourceTranscoder;
|
||||||
|
|
@ -12,23 +13,14 @@ import com.dkanada.gramophone.util.ThemeUtil;
|
||||||
public class BitmapPaletteTranscoder implements ResourceTranscoder<Bitmap, BitmapPaletteWrapper> {
|
public class BitmapPaletteTranscoder implements ResourceTranscoder<Bitmap, BitmapPaletteWrapper> {
|
||||||
private final BitmapPool bitmapPool;
|
private final BitmapPool bitmapPool;
|
||||||
|
|
||||||
public BitmapPaletteTranscoder(Context context) {
|
|
||||||
this(Glide.get(context).getBitmapPool());
|
|
||||||
}
|
|
||||||
|
|
||||||
public BitmapPaletteTranscoder(BitmapPool bitmapPool) {
|
public BitmapPaletteTranscoder(BitmapPool bitmapPool) {
|
||||||
this.bitmapPool = bitmapPool;
|
this.bitmapPool = bitmapPool;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Resource<BitmapPaletteWrapper> transcode(Resource<Bitmap> bitmapResource) {
|
public Resource<BitmapPaletteWrapper> transcode(@NonNull Resource<Bitmap> resource, @NonNull Options options) {
|
||||||
Bitmap bitmap = bitmapResource.get();
|
Bitmap bitmap = resource.get();
|
||||||
BitmapPaletteWrapper bitmapPaletteWrapper = new BitmapPaletteWrapper(bitmap, ThemeUtil.generatePalette(bitmap));
|
BitmapPaletteWrapper bitmapPaletteWrapper = new BitmapPaletteWrapper(bitmap, ThemeUtil.generatePalette(bitmap));
|
||||||
return new BitmapPaletteResource(bitmapPaletteWrapper, bitmapPool);
|
return new BitmapPaletteResource(bitmapPaletteWrapper, bitmapPool);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getId() {
|
|
||||||
return "BitmapPaletteTranscoder.com.dkanada.gramophone.glide.palette";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -31,10 +31,10 @@ import android.widget.Toast;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
import com.bumptech.glide.BitmapRequestBuilder;
|
|
||||||
import com.bumptech.glide.Glide;
|
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.target.SimpleTarget;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.BlurTransformation;
|
import com.dkanada.gramophone.glide.BlurTransformation;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
|
|
@ -544,7 +544,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
|
|
||||||
if (PreferenceUtil.getInstance(this).getShowAlbumCover()) {
|
if (PreferenceUtil.getInstance(this).getShowAlbumCover()) {
|
||||||
final Point screenSize = Util.getScreenSize(MusicService.this);
|
final Point screenSize = Util.getScreenSize(MusicService.this);
|
||||||
final BitmapRequestBuilder<?, Bitmap> request = CustomGlideRequest.Builder
|
final RequestBuilder<Bitmap> request = CustomGlideRequest.Builder
|
||||||
.from(Glide.with(MusicService.this), song.primary)
|
.from(Glide.with(MusicService.this), song.primary)
|
||||||
.asBitmap().build();
|
.asBitmap().build();
|
||||||
|
|
||||||
|
|
@ -557,13 +557,13 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
|
||||||
public void run() {
|
public void run() {
|
||||||
request.into(new SimpleTarget<Bitmap>(screenSize.x, screenSize.y) {
|
request.into(new SimpleTarget<Bitmap>(screenSize.x, screenSize.y) {
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
super.onLoadFailed(e, errorDrawable);
|
super.onLoadFailed(errorDrawable);
|
||||||
mediaSession.setMetadata(metaData.build());
|
mediaSession.setMetadata(metaData.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
|
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> glideAnimation) {
|
||||||
metaData.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, copy(resource));
|
metaData.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, copy(resource));
|
||||||
mediaSession.setMetadata(metaData.build());
|
mediaSession.setMetadata(metaData.build());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ import android.view.View;
|
||||||
import android.widget.RemoteViews;
|
import android.widget.RemoteViews;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
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.SimpleTarget;
|
||||||
import com.bumptech.glide.request.target.Target;
|
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.ColorUtil;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
|
|
@ -86,20 +86,20 @@ public class PlayingNotificationImpl extends PlayingNotification {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Glide.clear(target);
|
Glide.with(service).clear(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary)
|
target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary)
|
||||||
.generatePalette(service).build()
|
.generatePalette(service).build()
|
||||||
.into(new SimpleTarget<BitmapPaletteWrapper>(bigNotificationImageSize, bigNotificationImageSize) {
|
.into(new SimpleTarget<BitmapPaletteWrapper>(bigNotificationImageSize, bigNotificationImageSize) {
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
|
public void onResourceReady(BitmapPaletteWrapper resource, Transition<? super BitmapPaletteWrapper> glideAnimation) {
|
||||||
update(resource.getBitmap(), ThemeUtil.getColor(resource.getPalette(), Color.TRANSPARENT));
|
update(resource.getBitmap(), ThemeUtil.getColor(resource.getPalette(), Color.TRANSPARENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
super.onLoadFailed(e, errorDrawable);
|
super.onLoadFailed(errorDrawable);
|
||||||
update(null, Color.WHITE);
|
update(null, Color.WHITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ import androidx.media.app.NotificationCompat.MediaStyle;
|
||||||
import androidx.palette.graphics.Palette;
|
import androidx.palette.graphics.Palette;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
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.SimpleTarget;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
|
import com.dkanada.gramophone.glide.palette.BitmapPaletteWrapper;
|
||||||
|
|
@ -55,13 +55,13 @@ public class PlayingNotificationImpl24 extends PlayingNotification {
|
||||||
.generatePalette(service).build()
|
.generatePalette(service).build()
|
||||||
.into(new SimpleTarget<BitmapPaletteWrapper>(bigNotificationImageSize, bigNotificationImageSize) {
|
.into(new SimpleTarget<BitmapPaletteWrapper>(bigNotificationImageSize, bigNotificationImageSize) {
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
|
public void onResourceReady(BitmapPaletteWrapper resource, Transition<? super BitmapPaletteWrapper> glideAnimation) {
|
||||||
Palette palette = resource.getPalette();
|
Palette palette = resource.getPalette();
|
||||||
update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(Color.TRANSPARENT)));
|
update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(Color.TRANSPARENT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
update(null, Color.TRANSPARENT);
|
update(null, Color.TRANSPARENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ import android.view.View;
|
||||||
import android.widget.RemoteViews;
|
import android.widget.RemoteViews;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
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.SimpleTarget;
|
||||||
import com.bumptech.glide.request.target.Target;
|
import com.bumptech.glide.request.target.Target;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
|
|
@ -93,20 +93,20 @@ public class AppWidgetAlbum extends BaseAppWidget {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Glide.clear(target);
|
Glide.with(appContext).clear(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary)
|
target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary)
|
||||||
.asBitmap().build()
|
.asBitmap().build()
|
||||||
.into(new SimpleTarget<Bitmap>(widgetImageSize, widgetImageSize) {
|
.into(new SimpleTarget<Bitmap>(widgetImageSize, widgetImageSize) {
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
|
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> glideAnimation) {
|
||||||
update(resource);
|
update(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
super.onLoadFailed(e, errorDrawable);
|
super.onLoadFailed(errorDrawable);
|
||||||
update(null);
|
update(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ import android.view.View;
|
||||||
import android.widget.RemoteViews;
|
import android.widget.RemoteViews;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
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.SimpleTarget;
|
||||||
import com.bumptech.glide.request.target.Target;
|
import com.bumptech.glide.request.target.Target;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
|
|
@ -97,21 +97,22 @@ public class AppWidgetCard extends BaseAppWidget {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Glide.clear(target);
|
Glide.with(service).clear(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary)
|
target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary)
|
||||||
.generatePalette(service).build()
|
.generatePalette(service).build()
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {
|
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
|
public void onResourceReady(BitmapPaletteWrapper resource, Transition<? super BitmapPaletteWrapper> glideAnimation) {
|
||||||
Palette palette = resource.getPalette();
|
Palette palette = resource.getPalette();
|
||||||
update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(service, true))));
|
update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(service, true))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
super.onLoadFailed(e, errorDrawable);
|
super.onLoadFailed(errorDrawable);
|
||||||
update(null, MaterialValueHelper.getSecondaryTextColor(service, true));
|
update(null, MaterialValueHelper.getSecondaryTextColor(service, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ import android.view.View;
|
||||||
import android.widget.RemoteViews;
|
import android.widget.RemoteViews;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
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.SimpleTarget;
|
||||||
import com.bumptech.glide.request.target.Target;
|
import com.bumptech.glide.request.target.Target;
|
||||||
|
import com.bumptech.glide.request.transition.Transition;
|
||||||
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
import com.kabouzeid.appthemehelper.util.MaterialValueHelper;
|
||||||
import com.dkanada.gramophone.R;
|
import com.dkanada.gramophone.R;
|
||||||
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
import com.dkanada.gramophone.glide.CustomGlideRequest;
|
||||||
|
|
@ -90,21 +90,22 @@ public class AppWidgetClassic extends BaseAppWidget {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Glide.clear(target);
|
Glide.with(appContext).clear(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary)
|
target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary)
|
||||||
.generatePalette(service).build()
|
.generatePalette(service).build()
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {
|
.into(new SimpleTarget<BitmapPaletteWrapper>(imageSize, imageSize) {
|
||||||
@Override
|
@Override
|
||||||
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
|
public void onResourceReady(BitmapPaletteWrapper resource, Transition<? super BitmapPaletteWrapper> glideAnimation) {
|
||||||
Palette palette = resource.getPalette();
|
Palette palette = resource.getPalette();
|
||||||
update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(appContext, true))));
|
update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(appContext, true))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadFailed(Exception e, Drawable errorDrawable) {
|
public void onLoadFailed(Drawable errorDrawable) {
|
||||||
super.onLoadFailed(e, errorDrawable);
|
super.onLoadFailed(errorDrawable);
|
||||||
update(null, MaterialValueHelper.getSecondaryTextColor(appContext, true));
|
update(null, MaterialValueHelper.getSecondaryTextColor(appContext, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue